3个回答
展开全部
假定有不超过100个数据,为简单起见,也便于阅读和理解程序,给你开固定数组x[100],s[100][30]。 读的时候,先把数据全部读入 字符串数组 s[][] 。 然后把 D 变 E , 再用 sscanf 转字符串为 double 型数据。
如果数据量很大,你可以读一个字符串,处理和转换一次,这样就不需要 开 2维 字符串数组s[][],用 1 维便可,节省存储空间。数据量很大时,x,s 数组要改用全局量。
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int main() {
ifstream fs;
double x[100];
char s[100][30];
int i,j,n;
fs.open("abc.txt",ifstream::in);
n=0;
while(1){
fs >> s[n];
if (fs.eof()) break;
n++;
if (n>=100) break;
}
fs.close();
cout << "n=" << n<< endl;
for (i=0;i<n;i++) {
for (j=0;j<strlen(s[i]);j++) if (s[i][j]=='D') s[i][j]='E';
sscanf(s[i],"%lf",&x[i]);
cout << x[i] << endl;
}
return 0;
}
如果数据量很大,你可以读一个字符串,处理和转换一次,这样就不需要 开 2维 字符串数组s[][],用 1 维便可,节省存储空间。数据量很大时,x,s 数组要改用全局量。
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int main() {
ifstream fs;
double x[100];
char s[100][30];
int i,j,n;
fs.open("abc.txt",ifstream::in);
n=0;
while(1){
fs >> s[n];
if (fs.eof()) break;
n++;
if (n>=100) break;
}
fs.close();
cout << "n=" << n<< endl;
for (i=0;i<n;i++) {
for (j=0;j<strlen(s[i]);j++) if (s[i][j]=='D') s[i][j]='E';
sscanf(s[i],"%lf",&x[i]);
cout << x[i] << endl;
}
return 0;
}
更多追问追答
追答
你需要设格式,指定输出总位数和小数点下位数。那属锦上添花。总精度仍为double, 有效数字约14位。
展开全部
设置此文件为输入流,用成员函数getline以' '(空格)截断,然后取得相应buffer,利用sscanf函数,存取即可.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你图片中两行的字符串格式都不一样,你是想转换第一行的还是第二行的啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询