我对以下代码有一点问题:
std::string compare = "data_END";
while ((!(temp.compare(compare) == 0)) && std::getline(file, temp)) {
std::size_t pos = temp.find(' ');
std::string name = temp.substr(0,pos);
std::string number = temp.substr(pos);
...
所以,有一点在文件中有一行名为" data_END"。 它正确读取,因为我可以在调试选项中看到。但是.compare()方法不会返回0.因为我使用visual Studio我也可以看到细节,字符串之间的所有内容似乎都是相同的容量。在temp中它是31并且在比较中它是15.这是否会产生它们之间的区别?我自己无法获得任何进一步的帮助,我将不胜感激,
谢谢你们! :)答案 0 :(得分:1)
尝试重写此声明:)
while ((!(temp.compare(compare) == 0)) && std::getline(file, temp)) {
像
while ( std::getline(file, temp) && !( temp.compare(compare) == 0) ) {
首先,您必须在字符串temp
中读取该行的一行,然后才将其与字符串compare
进行比较。
另一个问题可能是文本文件中的CR符号。也就是说,每一行以对CR('\ r')+ LF('\ n')结束。在这种情况下,您应该从字符串temp中删除它。
例如,你可以写
while ( std::getline(file, temp) && !( temp.compare(0, compare.size(), compare) == 0) ) {