したがって、次のようなデータファイルがあります。
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;
}