提前为问题的基本性质道歉。
我正在尝试使用strcmp
函数测试两个匹配字符的字符串。
我将问题简化为以下简单代码:
#include <iostream>
#include <cstring>
using namespace std;
void compareStrings(string, string);
int main()
{
string string1 = "testString", string2 = "testString";
compareStrings(string1, string2);
return 0;
}
void compareStrings(string stringOne, string stringTwo)
{
if (strcmp(stringOne,stringTwo) == 0)
cout << "The strings match." << endl;
else
cout << "The strings don't match." << endl;
}
有人可以解释以下编译器错误消息吗?
./newProgram.cpp: In function ‘void compareStrings(std::string, std::string)’:
./newProgram.cpp:17:32: error: cannot convert ‘std::string {aka std::basic_string<char>}’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const char*, const char*)’
if (strcmp(stringOne,stringTwo) == 0)
^
谢谢! XZ
答案 0 :(得分:8)
strcmp
用于C字符串(以null结尾char *
)。 string::compare
适用于C ++ string
s。
如果确实希望strcmp
使用std::string
,则可以使用string::c_str()
获取指向底层C字符串的指针:
if (strcmp(stringOne.c_str(), stringTwo.c_str()) == 0)
但是,当然,如果你正在使用C ++,你应该使用 C ++,并使用std::string
's ==
overload。
if (stringOne == stringTwo)