string s;
s += '\0';
s += '\t';
if (s == "\0\t")
cout << "Yahoo";
我听不到“雅虎”。
这是否意味着如果我想检查这样的字符串,我必须这样编码?
if (s[0] == '\0' && s[1] == '\t')
cout << "Yahoo";
最佳答案
您正在使用将 std::string
与 const char*
进行比较的运算符。在该函数中,假定 const char*
指向一个以 null 结尾(即 '\0'
)的 c 字符串。由于 '\t'
出现在终止符之后,因此该函数不会将其视为字符串的一部分,实际上,甚至无法确定它是否存在.
你可以这样做:
if (s == std::string("\0\t",2))
这将构造一个带有完整字符串文字的 std::string
(减去编译器添加的终止 '\0'
),并将您的字符串与那个。
关于c++ - 为什么包含 '\0' 和 '\t' 的字符串不能使用 operator == 与 "\0\t"进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24902353/