1

ファイル (ifstream) の読み取り中に、新しい行を作成するように指示する方法はありますか?

たとえば、私はこれが起こることを望みます:

myfile>>array[1]>>array[2]>>endl;

明らかに、「endl」は許可されていません。これを行う別の方法はありますか?

編集---迅速な対応に感謝します!

テキスト ファイルから、そのファイルの 2 つの文字列を配列に格納し、次の行で同じことを実行しようとしています (または、必要に応じて for ループを使用します)。

文字列を使用することは、将来のプログラムをより柔軟にするため、私にとって重要です。

4

5 に答える 5

4

いくつかのオプション:

無視できます。

myfile >> array[1] >> array[2];
myfile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

または、各行を文字列ストリームとして読み取ることができます

std::string line;
std::getline(myfile,line);
std::stringstream  stream(line);

stream >> array[1] >> array[2];

注意: 配列のインデックスは 0 から始まります。

于 2008-12-19T00:13:47.803 に答える
3

std::getline行をメモリ ストリームに読み込み、そこから 2 つの文字列を取得するために使用します。

while (cin)
{
  string line;
  getline(cin, line);

  stringstream stream;
  stream << line;

  stream >> array[1]>>array[2];
}
于 2008-12-19T00:13:58.380 に答える
2

あなたの2つのアイテムを読んでから、電話してくださいmyfile.ignore(8192, '\n')

于 2008-12-18T23:31:53.580 に答える
1

この質問の意味がわかりません。ファイルのすべての行を文字列のベクトルに読み込む簡単な方法を次に示します。これを先にやっておけばやりたいことがやりやすいかもしれません。

std::vector<std::string> lines;

std::string line;
while (std::getline(myFile, line))
    lines.push_back(line);

これlines[4]で、5 行目を取得する、またはlines.size()何行あったかを調べることができます。

于 2008-12-19T00:22:11.747 に答える
0

これはうまくいくはずです:

stringstream stream;
string sLine;
int iLine;

while (cin)
{
  getline(cin, sLine);

  stream << sLine;
  stream >> data[iLine][0] >> data[iLine][1];
}

以前の回答のカスタマイズされたバージョン。

于 2008-12-19T01:30:36.260 に答える