我想比较两个字符串。可以用
strcmp
吗? (我尝试过,但似乎不起作用)。 string::compare
有解决办法吗?
除此之外,还有没有办法比较
string
与 char
?
感谢您的早期评论。我正在用 C++ 编码,是的,就像你们中的一些人提到的那样
std::string
。
我没有发布代码是因为我想学习常识,而且代码很长,所以与问题无关。
我想我了解了 C++ 和 C 之间的区别,感谢您指出这一点。我现在将尝试使用重载运算符。顺便说一句,
string::compare
也有效。
对于 C++,使用
std::string
并使用 string::compare
进行比较。
对于 C,请使用
strcmp
。如果你的(我的意思是你的程序)字符串(出于某种奇怪的原因)没有nul
终止,请使用strncmp
代替。
但是为什么有人不使用像
==
这样简单的东西来代替std::string
?
假设您的意思是
std::string
,为什么不使用重载运算符:str1 == str2
、str1 < str2
?
使用 C++ 时,请使用 C++ 函数,即。
string::compare
。当使用 C 并且您被迫使用 char*
作为字符串时,请使用 strcmp
根据你的问题,“有没有办法将字符串与字符进行比较?”你的意思是“我如何找出字符串中是否包含特定字符?”如果是这样,C 库函数:
char *strchr(const char *s, int c);
会为你做的。
--皮特
std::string 可以包含(并比较!)嵌入的空字符。
are*comp(...) 将比较 C 风格的字符串,最多比较第一个空字符(或指定的最大字节/字符数)
string::compare 实际上是作为模板 basic_string 实现的,因此您可以期望它适用于其他类型,例如 wstring
在不清楚的短语“将字符串与字符进行比较”时,您可以将字符与 *string.begin() 进行比较或查找第一次出现的位置(string::find_first_of 和 string::find_first_not_of)
免责声明:在我的 HTC 上打字,保留拼写错误:)
如果你已经有一个字符串对象,更简单的是 == ,如上所述,但是如果你必须 string(stuff),其中 stuff 是 char *,我会使用 strcmp,至少我确信性能更高。如果您不介意成为 C++ 大师,则不禁止使用 C 语言。