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 String

4

4 回答 4

5

由于您使用std::string,strcmp是不必要的 - 您可以使用<, ==,!=等。

于 2010-04-23T18:10:18.703 回答
4

您的包括:

由于您包含标准标题,它们应该在 <>

#include <string>
#include <iostream>

#include with "" 一般用于你自己的头文件,而不是标准的头文件。

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

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

此外,如果要将字符串转换为 const char*,可以使用mystring.c_str()

于 2010-04-23T18:42:21.343 回答
0

如果您想使用 strcmp,请注意它采用与您使用的参数不同的参数。

http://www.cppreference.com/wiki/c/string/strcmp

于 2010-04-23T18:13:17.873 回答
0

另一种方法是

result= strcmp(my_string.c_str(),my_string2.c_str());
于 2010-04-23T18:16:49.167 回答