String.find不能正确查找值

时间:2014-12-06 23:37:53

标签: c++ string find

我正在做一个涉及在C ++中分离字符串并在其中查找内容的项目的一部分。这段代码应该做的是通过一串坐标,如:

12 22 N 2 34 W

23 43 S 322 12 W

并找到S或W将布尔Sneg和Wneg变量更改为true,具体取决于它是否在字符串中找到它们。问题是在所有情况下它总是对两个值都返回true。 在这个问题" line"是一种以上面列出的方式包含坐标的刺痛。

#include<fstream>
    string south = 'S';
    string west = 'W';

    size_t found0 = line.find(south);
    if(found0 != std::string::npos)
    {
        char super = line.at(found0);
        if(super =='S')
        {
            Sneg = false;
        }
        else Sneg = true;
    }
    size_t found1 = line.find(west);
    if(found1 != string::npos)
    {
        char duper = line.at(found1);
        if(duper == 'W')
        {
            Wneg = false;
        }
        else Wneg = true;
    }

1 个答案:

答案 0 :(得分:0)

这样做你想要的:

const char south = 'S', west = 'W';
string line = "12 22 N 2 34 W"; // or some other source
bool Sneg = ( line.find(south) == string::npos );
bool Wneg = ( line.find(west)  == string::npos );

您的解决方案存在一些问题,最值得注意的是:

1)使用char来初始化字符串 2)如果if条件为假,则不设置Xneg的值。