[英]While reading a file (ifstream), is there any way to direct it to make a new line?
在读取文件(ifstream)时,是否有任何方法可以引导它换行?
例如,我希望发生这种情况:
myfile >> array [1] >> array [2] >> endl;
显然,“ endl”是不允许的。 还有另一种方法吗?
编辑---感谢大家的快速反应!
从文本文件,我试图将文件中的两个字符串存储到数组中,然后对下一行进行相同的操作(或者直到我需要使用for循环为止)
使用字符串对我来说很重要,因为它将使我将来的程序更加灵活。
几种选择:
您可以使用ignore。
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];
}
较早答案的定制版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.