2010-04-23 278 views
2

我想比较两个用户输入的字符串,但不能这样做......字符串比较

#include "stdafx.h" 
#include "iostream" 
#include "string" 
using namespace std; 

int _tmain(int argc, _TCHAR* argv0[]) 
{ 
    string my_string; 
    string my_string2; 
    cout<<"Enter string"<<endl; 
    cin>>my_string; 
    cout<<"Enter 2nd string"<<endl; 
    cin>>my_string2; 
    cout<<my_string<<" "<<my_string2; 
    strcmp(my_string,my_string2); 
    int result; 
    result= strcmp(my_string,my_string2); 
    cout<<result<<endl; 
    return 0; 
} 

这个错误出现。 错误1错误C2664:'strcmp':无法将参数1从'std :: string'转换为'const char *'c:\ users \ asad \ documents \ visual studio 2008 \ projects \ string \ string \ string。 CPP 23字符串

+5

停止。 – Cristina 2010-04-23 18:11:04

+0

请注意,_tmain不是标准的C++。 – 2010-04-23 18:14:28

+2

@Cristina:也许他是一只老鹰,正在用他的爪子打字。 http://hyperboleandahalf.blogspot.com/2010/04/alot-is-better-than-you-at-everything.html – 2010-04-23 18:44:48

回答

5

由于您使用std::stringstrcmp是不必要的 - 你可以使用<==!=

0

另一种方式做,这也是

result= strcmp(my_string.c_str(),my_string2.c_str()); 
+0

'string'有这样的方法:'result = my_string.compare(my_string2)' – newacct 2011-03-18 04:58:47

4

你包括:

既然你是包括标准的头,他们应该在<>

#include <string>
#include <iostream>

#include with“”通常用于您自己的头文件,而不是标准头文件。

您正在使用C++,因此无需使用strcmp。在C++中,您可以简单地使用== &!=比较两个字符串。

if (my_string == my_string2) result = 0;
else result = 1;

另外,如果你想将字符串转换为一个const char *,你可以使用PLZ请使用mystring.c_str()

+0

To更迂回,'strcmp'函数适用于由null(又名char *)终止的字符数组。如果你确实需要使用'strcmp',那么使用'std :: string'的'c_str()'方法。 – 2010-04-23 21:03:11

+0

的确,应该澄清一点。谢谢! – Sagar 2010-04-23 22:25:14

+0

谢谢你的所有OV – user324463 2010-05-03 18:31:58