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文字列が同じ場合に が返されることに注意してください。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 に答える
0

strcmpchar *asaは typeであるが必要std::stringです。

このstd::stringクラスは、 と互換性のある形式を返すメソッドを提供しますstrcmp
試す:int i = strcmp(a.c_str(), "v1");

于 2012-06-27T22:38:26.157 に答える