2012-06-27 23 views
0

在这一个和“V1”不出来等于......虽然内容same..can有人暗示的方式帮助这样一个出来是等于“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

什么节目输出? – Linuxios

+1

'strcmp(a,“v1”)'实际编译? –

+2

'char * c =“v1”;'应该是'const char * c =“v1”;' –

回答

6

Because strcmp returns 0 when the inputs match.

(顺便说一句,我认为实际的代码是strcmp(a.c_str(), "v1"),因为否则将不编译。)

+0

我知道...但我想字符串a等于“v1”....我的最终目标是以某种方式使a等于v1 – user1355603

+0

@ user1355603:参见例如http://ideone.com/RnYI5。如果这不符合您的期望,请澄清! –

0

strcmp需要char *,那里的astd::string型。

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

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