【发布时间】:2014-02-19 18:29:06
【问题描述】:
我想知道这两个代码之间的区别是什么。当我使用 .c_str() 时它不起作用
std::vector<std::pair<std::string, std::string> >::iterator it
for(;it!=MySet.end();++it)
{
if(std::get<1>(*it).c_str()=="PAUSE") //Why it works only with std::get<1>(*it) and not with std::get<1>(*it).c_str()
{
TempDefaultVan = std::get<0>(*it).c_str();
}
}
【问题讨论】:
-
使用 c_str() 您将指针与字符进行比较,而不是实际的字符序列。
-
c_str()返回一个const char *,并且指针比较仅在点指向相同的内存位置时才为“真”(这不是你想要的)。您想比较内容。 -
@ferozakbar 这与
data无关,而是指针比较与字符串内容比较。 -
strcmp用于字符串指针 (const char*) 比较。
标签: c++