注册 登录
编程论坛 C++教室

C++从txt中读取数据

jszjvictor 发布于 2013-01-28 06:02, 1765 次点击
请教大家怎么从一个有描述的txt中读取数字,而忽略描述,比如:
//total length l: 1                                             
//total time tpmax:1
//time step interval dt: 1.0e-6
//define cell number n: 100
//choice of boundary conditions(1: DIR; 2: ZGD; 3: PER) B: 1
//choice of convection types(1: UDS; 2: CDS; 3: TVD) C: 1
//switch on diffusion?(diffusion: 1; no diffusion: 0) dif: 0
//switch on convection?(convection: 1; no convection: 0) con: 1
就是说C++需要读取的只有每行末尾:后的的那个数字
24 回复
#2
青春无限2013-01-28 06:35
学习
#3
rjsp2013-01-28 08:26
你得告诉别人你这个文本的规律,比如:
a. 每行尾必有一个数值
b. 行尾的数值必以冒号和空格开始
c. 行尾的数值必以换行符结束
d. 行尾的数值可能是 整型、科学计数型
……
#4
SwanK2013-01-28 10:22
我也想知道
#5
fxbszj2013-01-28 18:31
mark,看结果是什么样的
#6
TonyDeng2013-01-28 18:32
与其问他规律,不如要他把文件传上来自己找规律,我看他自己都不知道应该找规律。
#7
不玩虚的2013-01-29 01:43
看着热闹来观光,读文件用文件流啊,这个基础。好像还有什么叫FILE的相关涵数也可以。
#8
lxqlyld2013-01-29 08:32
好像用BCB可以做到
#9
rjsp2013-01-29 09:25
以下是引用lxqlyld在2013-1-29 08:32:08的发言:

好像用BCB可以做到

这是在秀下限?
#10
jszjvictor2013-01-29 20:29
回复 3楼 rjsp
谢谢~文件就是上面这样的,读取冒号之后的数字,然后赋给c++里面相应的参数
没有说明只有数字的时候,我是这么写的:
程序代码:
double l, tpmax, dt;                                                        //define variables
    int n, w, B, C, dif, con;                                                   //define variables
    ifstream inputdata("parameter.txt");                                        //open the parameter file
    inputdata>>l>>tpmax>>dt>>n>>w>>B>>C>>dif>>con;                              //read the parameters to the variables
    inputdata.close();                                                          //close the parameter file

想请教要想前面加上说明,怎么只读冒号后面的数字
#11
jszjvictor2013-01-29 20:30
回复 6楼 TonyDeng
文件就是上面这样的,读取冒号之后的数字,然后赋给c++里面相应的参数
没有说明只有数字的时候,我是这么写的:
程序代码:
double l, tpmax, dt;                                                        //define variables
    int n, w, B, C, dif, con;                                                   //define variables
    ifstream inputdata("parameter.txt");                                        //open the parameter file
    inputdata>>l>>tpmax>>dt>>n>>w>>B>>C>>dif>>con;                              //read the parameters to the variables
    inputdata.close();                                                          //close the parameter file


想请教要想前面加上说明,怎么只读冒号后面的数字
#12
TonyDeng2013-01-29 21:16
操作步骤:
1.读入1行到字符串
2.从尾部开始往前搜索第1个冒号
3.从上面得到的冒号位置向后移1个字符,裁剪出后面的字符串,此时这个字符串应只有空格和数字字样
4.把第3步得到的字符串转换为数值
5.重复第1步循环至文件结束

步骤就是这个步骤,至于你用指针、数组、抑或C++的专用工具,都可以。你10楼的方法是不可靠的,前面有注释文字,是无法预料到底有多少个“单词”的,硬写读入什么形式的数据必定失败。唯一的线索就是你知道所需要的东西在每行最后一个冒号的右边,前面就不管是什么,一概不要理会。
#13
lxqlyld2013-01-30 08:38
以下是引用rjsp在2013-1-29 09:25:55的发言:


这是在秀下限?

秀什么下限啊,因为我不是很懂,所以我用的“好像”你没看见啊;你要懂就抓紧把问题给那哥们解决一下,人家代码也给你贴出来了,还给你说了谢谢,别让人家等着急了,顺便我也见识一下你这贵宾的水平如何。
不要老来找我事好不好。

[ 本帖最后由 lxqlyld 于 2013-1-30 08:40 编辑 ]
#14
SwanK2013-01-30 17:53
我来试着回答,现买现卖吧
我看你还没有打开你的inputdata 文件,所以你就读不出来了
#include <iosttream>
#include <fstream>

using namespace std;
int main()
{
  ifstream inputdata;
  inputdata.open ("parameter.txt");  //open file stream
  inputdata>>l>>tpmax>>dt>>n>>w>>B>>C>>dif>>con;   
  cout<<l<<","tpmax<<","dt<<","n<<","w<<","B<<","C<<","dif<<","<<con<<endl;
。。。
当你运行后就而况仪看到那些变量的值了。用cout的好处就是可以立即看到结果。。
希望这可以帮到你。
  

#15
jszjvictor2013-01-31 02:13
回复 14楼 SwanK
谢谢,不过这不是我要的那种
#16
jszjvictor2013-01-31 02:15
回复 12楼 TonyDeng
谢谢!
#17
kb23182013-02-04 20:48
太专业了,没看懂
#18
kb23182013-02-04 20:56
回复 14楼 SwanK
count<<"A";这种类型和printf("A");的表示方的写法一样么,都是输出引号里的内容?
#19
kb23182013-02-04 21:05
回复 14楼 SwanK
以前学c,现在看c++有很多问题,想请教,能否加QQ和你请教点问题,我的QQ397380465,
#20
SwanK2013-02-14 14:43
如果今天没有到这里看,还不知道你要加我。
我可是刚开始学来个星期的C++
大家可以互相讨论。
我会加你的。谢谢信任我。
#21
SwanK2013-02-14 14:47
刚开始学c++5个星期, 还在研究努力中
#22
Susake2013-02-14 14:50
。。。。
#23
SwanK2013-02-14 14:57
喂,你老跟着我后面 。。。干吗?快回答我问题去啊,快帮忙!我一会回来看啊!谢谢!
#24
Susake2013-02-14 15:01
哥学的不是C++帮不到了
#25
SwanK2013-02-14 15:04
用C来解决也可以,思路一样的,改一下就行。我觉得我现在思路很乱。要学习算法!
去休息。谢谢!
1