C++中怎么逐行读取数据

例如1231.0001.0001.0001.0011.0011.0011.0021.0021.0021.0041.0041.0041.0051.0051.0061.006... 例如
1
23
1.000 1.000 1.000
1.001 1.001 1.001
1.002 1.002 1.002
1.004 1.004 1.004
1.005 1.005 1.006
1.006 1.007 1.008
……
读入的数据最好是float型或者double型的,谢谢
展开
 我来答
风若远去何人留
推荐于2017-09-04 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部

可以使用C++的库函数getline实现。

getline会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。

1)读到文件结束符;

2)遇到函数指定的结束符;

3)输入达到最大限度。

getline有两种重载:

istream &getline( char *buffer, streamsize num );   

 istream &getline( char *buffer, streamsize num, char delim );   

参数说明:

buffer: 读取的数据将存在buffer中。

num:最多读取num个字符。即之前所说的最大限度。

delim:结束符,当遇到指定的结束符时将结束输入。在第一种重载中,结束符为\n,即遇到换行结束。


所以要实现整行读取,使用第一种重载就可以了。示例代码如下:

#include <iostream>
using namespace std;
int main()
{
    char buf[1024];//存储的buf。
    while(getline(buf,sizeof(buf)))//读取一行。
    {
        cout << "read line:" <<buf<<endl;//输出读取到的数据。
    }
    
    return 0;
}
半萝萝6549
2014-08-22 · 超过66用户采纳过TA的回答
知道答主
回答量:116
采纳率:100%
帮助的人:56.9万
展开全部
假定文件在 abc.txt 中,无空白行
用读入1行,再找每行最后一个数的开始位置,用 sscanf 读得。
#include<stdio.h>
main(){ FILE *fin;
char str[80];
int i,L,n=0;
double x[30000];
fin=fopen("abc.txt","r");
while(1)
{
if ( fgets(str,80,fin)==NULL) break;
L = strlen(str);
for (i=L-1;i>0;i--){
if (str[i-1]==' ' && (str[i]>='0' && str[i]<='9')){
sscanf(&str[i-1],"%lf",&x[n]);n++;break;}
};
}
for (i=0;i<n;i++) printf("%g\n",x[i]);
return 0;
}
=====
另一种方法是:
fscanf(fin,"%*s %*s %*s %lf",&x[i]);
因为你的数据有规律,可以跳过3个 读1个。 %*s 就是跳一个字符串。
追问

我想问一下下面这块是什么意思,我刚学编程,很不好意思

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lch743
推荐于2017-10-05 · TA获得超过1181个赞
知道小有建树答主
回答量:377
采纳率:50%
帮助的人:370万
展开全部
ifstream fin( strDataInFile.c_str(), std::ifstream::in || std::ifstream::binary );
string strLine = '"
while( getline( fin, strLine ) )
{
    ...
}

大概就是这样的结构吧,至于具体的类型,用的时候再转过来吧。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
的撒年09
2015-11-10 · TA获得超过450个赞
知道小有建树答主
回答量:463
采纳率:50%
帮助的人:298万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2014-08-22
知道答主
回答量:28
采纳率:7%
帮助的人:6.4万
展开全部
先把一行读进一个String里面
String curline = getline(cin)
然后用字符串流是stringstream从一个字符串里面解析
stringstream ss;
double cur;
ss << curline;
while(ss >> cur){
//store cur;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式