ifstream获取从char到string的换行输出

use*_*711 0 c++ ifstream

C++ ifstream获取从char到string的换行getline输出

我有一个文本文件..所以我读了它,我做了类似的事情

char data[50];
readFile.open(filename.c_str());

while(readFile.good())
{
readFile.getline(data,50,',');

cout << data << endl;

}
Run Code Online (Sandbox Code Playgroud)

我的问题是,不是通过变量名数据创建大小为50的字符,我可以将getline变为字符串而不是像

string myData;
readFile.getline(myData,',');
Run Code Online (Sandbox Code Playgroud)

我的文本文件是这样的

Line2D,[3,2] Line3D,[7,2,3]

我试过,编译器说..

没有匹配的getline函数(std :: string&,char)

所以仍然可以通过分隔符来分解,将值赋给字符串而不是char.

更新:

运用

while (std::getline(readFile, line))
{
    std::cout << line << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

它逐行读取,但我想将字符串分成几个分隔符,原来如果使用char我将指定分隔符作为第3个元素是

readFile.getline(data,50,' , ');

如果我用分隔符逗号破解/爆炸,如何使用字符串,如上所述.逐行

hmj*_*mjd 6

用途std::getline():

std::string line;
while (std::getline(readFile, line, ','))
{
    std::cout << line << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

务必立即检查读取操作的结果,否则代码将尝试处理读取失败的结果,就像发布的代码一样.

虽然可以在其中指定不同的分隔符,getline()但可能会错误地将两个无效行作为单个有效行处理.建议完整检索每一行,然后拆分该行.分割线的有用工具是boost::split().