在读取文件(ifstream)时,有什么方法可以引导它换行吗?
例如,我希望这发生:
我的文件>>数组[1]>>数组[2]>>endl;
显然,“endl”是不允许的。还有另一种方法可以做到这一点吗?
编辑---感谢你们的快速回复!
从一个文本文件中,我试图将该文件中的两个字符串存储到数组中,然后对下一行执行相同的操作(或者直到我需要,使用 for 循环)
使用字符串对我来说很重要,因为它将使我未来的程序更加灵活。
几个选项:
您可以使用忽略。
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 开始。
用于std::getline
将一行读入内存流,然后从中获取两个字符串。
while (cin)
{
string line;
getline(cin, line);
stringstream stream;
stream << line;
stream >> array[1]>>array[2];
}
阅读你的两个项目,然后打电话myfile.ignore(8192, '\n')
我不知道这个问题是什么意思。这是将文件的所有行读入字符串向量的简单方法。如果您先执行此操作,则执行您想做的事情可能会更容易。
std::vector<std::string> lines;
std::string line;
while (std::getline(myFile, line))
lines.push_back(line);
现在你可以说lines[4]
得到第五行,或者lines.size()
找出有多少行。
这应该有效:
stringstream stream;
string sLine;
int iLine;
while (cin)
{
getline(cin, sLine);
stream << sLine;
stream >> data[iLine][0] >> data[iLine][1];
}
早期答案的定制版本。