Nin*_*750 -2 c++ string strlen
#include <iostream>
#include <cstring>
int main()
{
auto l = std::strlen("123\0456\0");
std::cout << l << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
为什么这段代码的输出是5?
我预计 3。
这是要测试的在线版本:https : //ideone.com/UQRKlV
"123\0456\0"是类型的文字const char[7]。
\045是单个字符,以八进制指定。在 ASCII 中它是'%'. 这里\0是不表示NUL由于最大适合解析规则提取\045作为八进制转义序列:请注意,0,4,和5是有效的八进制数字以及一个八进制转义序列不能超过3个位数更长。
第二个\0是显式的NUL,并且NUL在文字的末尾有一个隐含的额外内容。
strlen将返回 5 因为在第一个之前有那么多字符NUL。