0

C++ ifstream get line change getline 输出从 char 到 string

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

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,',');

我的文本文件是这样的

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

我试过了,编译器说..

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

那么是否仍然可以通过分隔符来打破,将值分配给字符串而不是char。

更新:

使用

while (std::getline(readFile, line))
{
    std::cout << line << std::endl;
}

它逐行读取,但我想将字符串分成几个分隔符,最初如果使用 char 我会将分隔符指定为第三个元素

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

如果我用分隔符逗号打破/爆炸,我该如何处理字符串,上面的那个。一行一行地

4

1 回答 1

6

使用std::getline()

std::string line;
while (std::getline(readFile, line, ','))
{
    std::cout << line << std::endl;
}

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

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

于 2012-11-13T09:35:56.243 回答