在阅读文件(ifstream)时,有没有办法指导它创建新行?
例如,我希望发生这种情况:
MYFILE>>阵列[1]>>阵列[2]>> ENDL;
显然,“endl”是不允许的。还有另一种方法吗?
编辑---感谢快速回复的家伙们!
从文本文件中,我试图将该文件中的两个字符串存储到数组中,然后对下一行执行相同操作(或直到我希望使用for循环)
使用字符串对我来说很重要,因为它会使我未来的程序更加灵活。
答案 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];
}
早期答案的定制版本。