我正在做一个涉及在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;
}
答案 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
的值。