2010-04-23 155 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