如何使字符串相等?

时间:2012-06-27 22:31:32

标签: c++

在这个和“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”。

3 个答案:

答案 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