在这个和“v1”并不相同......尽管内容相同......有人可以帮助建议一种方式,使a等于“v1”
int main()
{
stringstream s;
string a;
char *c="v1";
s<<c;
a=s.str();
cout<<a;
int i=strcmp(a, "v1");
cout<<"i="<<i;
}
在比较a和“v1”时,不要相等......请提出一些方法,使我可以使a等于“v1”......最终目标是使a等于到“v1”。
答案 0 :(得分:6)
Because strcmp
returns 0 when the inputs match.
(顺便提一下,我假设您的实际代码是strcmp(a.c_str(), "v1")
,否则它将无法编译。)
答案 1 :(得分:0)
strcmp
需要char *
,其中a
的类型为std::string
。
std::string
类提供了一种返回与strcmp
兼容的格式的方法
尝试:int i = strcmp(a.c_str(), "v1");
答案 2 :(得分:0)
他们 相同,至少是词汇上的。请注意,strcmp
在字符串相同时返回0
,与true
不同。
int main()
{
stringstream s;
string a;
const char *c="v1";
s<<c;
a=s.str();
cout << a << "\t" << c;
cout << endl;
cout << boolalpha << (a == c) << endl;
cout << boolalpha << (!strcmp(c, a.c_str())) << endl;
}
输出:
v1 v1
true
true