使用 std::string.compare() 将不起作用

Using std::string.compare() won't work

本文关键字:不起作用 compare std string 使用      更新时间:2023-10-16

我有一个小问题与以下代码:

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时,我也可以看到细节,除了容量之外,字符串之间的一切似乎都是一样的。温度是31,比较温度是15。这是他们之间的区别吗?我一个人走不动了,如果你能帮助我,我将不胜感激。

谢谢你们了!:)

试着重写这个语句:)

while ((!(temp.compare(compare) == 0)) && std::getline(file, temp)) {

while ( std::getline(file, temp) && !( temp.compare(compare) == 0) ) {

首先你必须读取字符串temp中的一行文件,然后才将其与字符串compare进行比较。

另一个问题可能是文本文件中的CR符号。也就是说,每一行以pair CR ('r') + LF ('n')结束。在这种情况下,你应该从字符串temp中删除它。

例如你可以写

while ( std::getline(file, temp) && !( temp.compare(0, compare.size(), compare) == 0) ) {