C++中如何将文件中字符串转换为浮点数字 例如图片所示 50

我是新手麻烦会的给编一下... 我是新手 麻烦会的给编一下 展开
 我来答
金色潜鸟
2013-07-09 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5763万
展开全部
假定有不超过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;
}
更多追问追答
追问

再问您一个问题

为什么atof()输出的只是除小数点以外六个数字  不能再多输出小数点后的数了么 

追答
你需要设格式,指定输出总位数和小数点下位数。那属锦上添花。总精度仍为double, 有效数字约14位。
tommyscf_001
2013-07-08 · TA获得超过107个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:88.1万
展开全部
设置此文件为输入流,用成员函数getline以' '(空格)截断,然后取得相应buffer,利用sscanf函数,存取即可.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ronketai
2013-07-08 · TA获得超过296个赞
知道小有建树答主
回答量:372
采纳率:100%
帮助的人:261万
展开全部
你图片中两行的字符串格式都不一样,你是想转换第一行的还是第二行的啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式