所以我有一个看起来像这样的数据文件:
x + y + z
30 45 50
10 20 30
我需要的唯一字符是运算符,因此我能够使用 '+' '+'file.get()
成功获取这些字符并将它们放入数组中。问题是我需要获取下一行数字,并将它们分配给值 x , yz 。我知道我不能使用 .get() ,我必须使用getline
. 我是否也必须消除file.get()
并使用getline
第一部分代替?
我查看了此处发布的一些问题,但没有一个问题与我的非常相似。注意我实际上将这些值用于我程序的另一部分,只是用来cout
查看我的值是否被正确读取
这是我以前的代码:
main(int argc, char *argv[])
{
int a=0;
int n;
fstream datafile;
char ch;
pid_t pid;
int a, b, c, result;
string line;
datafile.open("data1.txt");
if(datafile)
{
for(int i=0; i <9; i++)
{
datafile.get(ch);
if (ch == '*'||ch == '/'||ch == '+'||ch == '-')
{
operations[a] = ch;
cout<<operations[a];
a++;
}
}
}
else
cout<<"Error reading file";
}
所以这就是我在开始时获取文件第一行的方式。它像我想要的那样工作,可能不是最好的编码,但它确实有效。尽管如此,我还是尝试获取文件的其余部分,这次使用getline
,但我没有得到数字,而是得到了一堆随机的乱码/数字。我知道如果我使用getline
,第一行不能在我的循环中。我知道这就是我获得数字的方式。
while(getline(datafile, line))
{
istringstream ss(line);
ss >> x >> y >> z;
cout<<x<<""<<y<<""<<z;
}