【发布时间】:2013-07-15 13:57:11
【问题描述】:
仍然是 C++ 的初学者,我不知道如何使用 fstream。
我想为程序中的一组 double 变量赋值,来自
.txt 或 .csv 文件(出于实际原因,.csv 可能更好。)
假设我的input_file.csv 看起来像这样:
10
0
20
0.4
0.1333382222
0
0.5
10
20
0.76
0.3
0.1
0.2
这些值应该分配给我的代码中的以下变量(首先声明为等于0):
/// geometry
double Dist=0; ///Distance between the 2
double PosAi = 0;
double PosAo = 0;
double PosBi = 0;
double PosBo = 0; ///positions i/o
/// densities
double iDA=0;
double oDA=0;
double iDAtop=0;
double oDAtop=0; /// Left
double iDB=0;
double oDB=0;
double iDBtop=0;
double oDBtop=0; /// Right
我想读取input_file.csv 的值并将它们分配给我的变量,这样如果我输入:
cout<<Dist<<" "<<PosAi<<" "<<PosAo<<" "<<
…………等等。 ;
我在控制台上得到以下列表:
10 0 20 0.4 0.1333382222 0 0.5 10 20 0.76 0.3 0.1 0.2
但是我不知道如何使用 fsteam 来做这件事,你能帮帮我吗? 谢谢!
如果像我这样的初学者遇到同样的问题,这就是答案:
#include <iostream>
#include <fstream>
using namespace std;
/// geometry
double Dist=0; ///Distance between the 2
double PosAi = 0;
double PosAo = 0;
double PosBi = 0;
double PosBo = 0; ///positions i/o
/// densities
double iDA=0;
double oDA=0;
double iDAtop=0;
double oDAtop=0; /// Left
double iDB=0;
double oDB=0;
double iDBtop=0;
double oDBtop=0; /// Right
int main()
{
ifstream ifs ("input.csv");
if (!ifs)
// process error
ifs >> Dist;
ifs >> PosAi;
ifs >> PosAo;
ifs >> PosBi;
ifs >> PosBo;
ifs >> iDA;
ifs >> oDA;
ifs >> iDAtop;
ifs >> oDAtop;
ifs >> iDB;
ifs >> oDB;
ifs >> iDBtop;
ifs >> oDBtop;
// print variables
cout << Dist << " " << PosAi << " " << PosAo << " " << PosBi << " " << PosBo << " " << iDA << " " << oDA << " " << iDAtop << " " << oDAtop << " " << iDB << " " << oDB << " " << iDBtop << " " << oDBtop << endl;
}
谢谢
【问题讨论】:
-
如果您不向我们展示您尝试过的更多内容,就很难为您提供帮助,因为我告诉您如何做您已经知道的事情毫无意义。
-
这次修改后是不是更清楚了?
-
@adrienlucca.wordpress.com 你不使用
fstream,你使用ofstream。而且您可能不会直接访问它,而是通过istream&。 -
嗯,jsp 已经给出了答案,这与我在这一点上的建议一致(除了“获取一本关于 C++ 的书”)