【发布时间】:2017-01-25 00:37:04
【问题描述】:
鸡肉,出售,60
微波炉,通缉,201。
这些是我的 txt 文件中的示例行。现在这是我的代码:
while(getline(data, word, '\n')){
ss<<word;
while(getline(ss, word, ',')){//prints entire file
cout<<word<<endl;
}
}
我的输出是:
chicken
for sale
60
我的文件已成功逐行解析,但我还需要删除每个逗号后的空格。在此处的逗号后添加一个空格只会给我一个错误“没有匹配的函数来调用'getline(...:
while(getline(ss, word, ', '))
解决方案:我刚刚使用了擦除功能
if(word[0]==' '){//eliminates space
word.erase(0,1);
}
【问题讨论】:
-
std::getline 只能采用一个分隔符 - 您需要使用 std::substr 之类的内容处理您进一步阅读的内容
-
std::getline是一个简单的解析函数,它提供了指定单个分隔符的选项。当你的解析要求有点复杂时,你必须自己实现你的解析算法。您的方法是正确的:将输入分解为逗号分隔的块。现在,将每个块作为一个字符串,并删除开头,可能还有尾随空格。您应该能够在您的 C++ 书中找到如何做到这一点的示例。
标签: c++