关于strcmp的问题

时间:2010-07-10 08:09:05

标签: c++

例如,我们有两个字符串:

string s = "cat";
string s1 = "dog";

编写以下方法是否正确?

int a = strcmp(s, s1);

或者什么是正确的形式?

2 个答案:

答案 0 :(得分:11)

C ++的std::string可以直接比较,所以你可以写一些。

if (s == s1)
  cout << "the strings are equal" << endl;
else if (s < s1)
  cout << "the first string is smaller" << endl;
else
  ...

但如果你真的需要整数值,你可以使用the .compare method

int a = s.compare(s1);

答案 1 :(得分:1)

为了完整起见,尽管您应该尽可能使用内置字符串函数,但是在常见情况下您经常需要将C样式的空终止字符串与C ++字符串进行比较。例如,您将不断遇到系统调用返回指向C字符串的指针的情况。

您可以选择将C字符串转换为C ++字符串并进行比较

string  s1 = "cat";
string  s2 = "dog";
const char *s3 = "lion";

if (s1 == string(s3))
    cout << "equal" << endl;
else
    cout << "not equal" << endl;

或将C ++的底层C字符串与另一个C字符串进行比较:

a = strcmp(s1.c_str(), s3);