如何从.txt文件中提取出一个一个的阿拉伯数据?

superwavelet 2010-11-11 11:57:59
csdn.txt中的内容结构如下:

graph 1 11.081 4.8889
node 0 4.9153 4.1133 0.5 0.19444 "1000 Years for Revenge" filled ellipse #00ff00 lightgrey
node 1 4.0532 4.4635 0.5 0.19444 "Bush vs. the Beltway" filled ellipse #0000ff lightgrey
node 2 5.5702 4.1724 0.5 0.19444 "Charlie Wilson's War" filled ellipse #0000ff lightgrey
node 3 3.5785 3.1964 0.5 0.19444 "Losing Bin Laden" filled ellipse #0000ff lightgrey
node 4 5.3341 3.4986 0.5 0.19444 "Sleeping With the Devil" filled ellipse #00ff00 lightgrey


使用 infile>>a[i];

很方便,可以一下读出456这样的数据到a[i]里面。但是一下子要把文件中所有的数据都读出来。

如何控制这个文件流,使之从每一行的数据项开始读,比如

node 0 4.9153 4.1133 0.5 0.19444 "1000 Years for Revenge" filled ellipse #00ff00 lightgrey

从node后面的数字0开始读取,然后读4.9153 4.1133 ,然后读下一行

谢谢
...全文
78 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jixingzhong 的回复:]

以读取node 0 4.9153为例:

char buf[128]="";
float f1,f2;
fscanf(fp,"%s%f%f",buf,&f1,&f2); //buf="node",f1=0,f2=4.9153
[/Quote]
正解

格式固定的话,就是这样
jixingzhong 2010-11-12
  • 打赏
  • 举报
回复
以读取node 0 4.9153为例:

char buf[128]="";
float f1,f2;
fscanf(fp,"%s%f%f",buf,&f1,&f2); //buf="node",f1=0,f2=4.9153

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧