在读取文件(ifstream)时,有没有办法指导它创建一个新行?

时间:2008-12-18 23:19:59

标签: c++ arrays input newline ifstream

在阅读文件(ifstream)时,有没有办法指导它创建新行?

例如,我希望发生这种情况:

MYFILE>>阵列[1]>>阵列[2]>> ENDL;

显然,“endl”是不允许的。还有另一种方法吗?

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

从文本文件中,我试图将该文件中的两个字符串存储到数组中,然后对下一行执行相同操作(或直到我希望使用for循环)

使用字符串对我来说很重要,因为它会使我未来的程序更加灵活。

5 个答案:

答案 0 :(得分: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开始。

答案 1 :(得分:3)

使用std::getline将一行读入内存流,然后从中获取两个字符串。

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

  stringstream stream;
  stream << line;

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

答案 2 :(得分:2)

阅读您的两个项目,然后拨打myfile.ignore(8192, '\n')

答案 3 :(得分:1)

我不知道这个问题意味着什么。这是一种将文件的所有行读入字符串向量的简单方法。如果你先这样做,你可能会更容易做你想做的事。

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

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

现在你可以说lines[4]获得第五行,或lines.size()找出有多少行。

答案 4 :(得分:0)

这应该有效:

stringstream stream;
string sLine;
int iLine;

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

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

早期答案的定制版本。