STL 运算符和重载用于std::string
意味着可以安全使用operator==
比较一个char*
反对std::string
,没有限制,LHS/RHS 是哪一个?
不,这不安全无限制。
限制是:
- the
char*
不能是空指针。
- 指向的字符序列
char*
必须以零分隔(即以\0
)
但哪一个放在左边、哪一个放在右边并不重要——它会产生相同的结果。
但有一个警告:std::string
s 可能包含\0
不在末尾的字符。将其中一个与一个进行比较char*
字符序列将始终给出 false,因为比较将在第一个字符处停止\0
遇到在char*
.
Example:
char c[] = "Hello\0 World!";
std::string s(c, sizeof(c));
std::cout << ((s == c) ? "ok" : "meh") << '\n'; //meh - compares only until the first \0
std::cout << c << '\n'; //Hello - cout also stops at first \0
std::cout << s << '\n'; //Hello World!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)