C++ ifstream 获取行更改 getline 输出从字符到字符串
我有一个文本文件..所以我读了它,我做了类似的事情
char data[50];
readFile.open(filename.c_str());
while(readFile.good())
{
readFile.getline(data,50,',');
cout << data << endl;
}
我的问题是,与其通过变量名称数据创建一个大小为 50 的字符,我是否可以将 getline 转换为字符串,而不是类似
string myData;
readFile.getline(myData,',');
我的文本文件是这样的
2D行, [3,2]3D行,[7,2,3]
我试过了,编译器说..
没有匹配函数 getline(std::string&,char)
那么是否仍然可以通过分隔符中断,将值分配给字符串而不是字符。
更新:
用
while (std::getline(readFile, line))
{
std::cout << line << std::endl;
}
它逐行读取,但我想将字符串分成几个分隔符,最初如果使用 char,我会将分隔符指定为第 3 个元素,即
readFile.getline(data,50,',');
如果我用上面的分隔符逗号打破/爆炸,我该如何处理字符串。 逐行
使用 std::getline()
:
std::string line;
while (std::getline(readFile, line, ','))
{
std::cout << line << std::endl;
}
始终立即检查读取操作的结果,否则代码将尝试处理读取失败的结果,就像发布的代码一样。
尽管可以在 getline()
中指定不同的分隔符,但它可能会错误地将两个无效行处理为单个有效行。建议完整检索每一行,然后拆分该行。用于分割线条的有用实用程序是 boost::split()
。