Android 比较Cocos2d-x中的字符串时出错
我正在使用cocos2d-x创建一个Android游戏 我在另一个类中调用一个静态函数,该函数检查给定的用户名和密码是否正确。如果用户名和密码都正确,则函数返回字符串“yes”,否则返回“no” 然后比较字符串以决定下一步要做什么。我遇到的问题是,在CCLOG中,它打印的响应是“yes”,但是if分支不执行,即strcmp(result.c_str(),“yes”)不返回true,但CCLOG打印的结果是“yes” 这是我的密码:Android 比较Cocos2d-x中的字符串时出错,android,c++,string,cocos2d-x,strcmp,Android,C++,String,Cocos2d X,Strcmp,我正在使用cocos2d-x创建一个Android游戏 我在另一个类中调用一个静态函数,该函数检查给定的用户名和密码是否正确。如果用户名和密码都正确,则函数返回字符串“yes”,否则返回“no” 然后比较字符串以决定下一步要做什么。我遇到的问题是,在CCLOG中,它打印的响应是“yes”,但是if分支不执行,即strcmp(result.c_str(),“yes”)不返回true,但CCLOG打印的结果是“yes” 这是我的密码: // LogInPage if (((CCMenuItemSpr
// LogInPage
if (((CCMenuItemSprite*) pSender)->getTag() == 0) {
string username = string(m_pEditUsername->getText());
string password = string(m_pEditPassword->getText());
string result = SQLDatabase::logIn(username, password);
CCLOG("RESULT IS %s", result.c_str());
if (strcmp(result.c_str(), "yes") == 0) {
CCLOG("IN IF BRANCH");
CCDirector::sharedDirector()->replaceScene(PlayMultiplayerPage::scene());
}
}
//静态登录功能
string SQLDatabase::logIn(string username, string password) {
stringstream strm;
strm << "http://****.net/select_functions.php?
function=logIn&username="
<< username << "&password=" << password;
CURL* curl;
CURLcode res;
string result;
curl = curl_easy_init();
string URL = strm.str();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, URL.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, Write_To_String);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &result);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
CCLOG("curl return code is %i", (int) res);
CCLOG("response is \n %s", result.c_str());
}
return result;
}
你可以使用C++特定的函数。 如果那不起作用
char * cstr = new char [str.length()+1];
std::strcpy (cstr, str.c_str());
然后比较。我以前也尝试过比较功能,但仍然不起作用。您提供的方法也不起作用。
结果
字符串中一定有一些不需要的字符。检查它的长度和其中的单个字符。打印出来的时候看起来还可以。
char * cstr = new char [str.length()+1];
std::strcpy (cstr, str.c_str());