0

在这种情况下,a 和“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” ”。

4

3 回答 3

6

因为strcmp当输入匹配时返回 0。

(顺便说一句,我假设您的实际代码是strcmp(a.c_str(), "v1"),否则它不会编译。)

于 2012-06-27T22:33:42.443 回答
0

strcmp需要 a char *,其中 asa的类型为std::string

该类std::string提供了一种方法,该方法返回与strcmp.
尝试:int i = strcmp(a.c_str(), "v1");

于 2012-06-27T22:38:26.157 回答
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
于 2012-06-27T22:45:49.660 回答