1

在读取文件(ifstream)时,有什么方法可以引导它换行吗?

例如,我希望这发生:

我的文件>>数组[1]>>数组[2]>>endl;

显然,“endl”是不允许的。还有另一种方法可以做到这一点吗?

编辑---感谢你们的快速回复!

从一个文本文件中,我试图将该文件中的两个字符串存储到数组中,然后对下一行执行相同的操作(或者直到我需要,使用 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将一行读入内存流,然后从中获取两个字符串。

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

  stringstream stream;
  stream << line;

  stream >> array[1]>>array[2];
}
于 2008-12-19T00:13:58.380 回答
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]得到第五行,或者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 回答