Comparing two strings in c++ in ROS -
i trying compare 2 strings in following method on ros
std::string line_eval_str = std::string(line_eval)+""; std::string check ("checking condition"); while(/*some condtion*/) { if(check.compare(line_eval_str) == 1) { ros_error("breaking loop!!!!! %s",line_eval); break; } else { /*execute part*/ } } here though line_eval_str , check have same string in them else part executed. tried other method
while(/*some condtion*/) { if(strcmp(line_eval_str,check) == 1) { ros_error("breaking loop!!!!! %s",line_eval); break; } else { /*execute part*/ } } even code provides same result ( ie,. strings have same value else part executed). don't understand problem. have ros?
here though line_eval_str , check have same string in them else part executed
this expected behaviour: both string::compare() , strcmp() return 0 (and not 1) if strings equal. if want if() body execute, need test return value against 0:
#include <iostream> int main() { std::string str1 = "hello"; std::string str2 = "hello"; if (str1.compare(str2) == 0) { std::cerr << "strings equal" << std::endl; } else { std::cerr << "strings not equal" << std::endl; } return 0; } $ g++ -o cmp cmp.c $ ./cmp strings equal for better readability, should use comparison operator instead of compare method:
if (str1 == str2) { ...
Comments
Post a Comment