std::string my_string = "";
char test = my_string[0];
我注意到这个程序不会崩溃,在我的所有测试中test的值都为0。
我能否信赖它始终为0?还是说这是随意的?
这是糟糕的编程吗?
编辑: 从某些评论中,我了解到有些人对此的用处存在误解。
它的目的不是为了检查字符串是否为空。 而是不需要检查字符串是否为空。
情况是有一个可能为空的字符串。 我只关心这个字符串的第一个字符(如果它不为空)。
在我看来,检查字符串是否为空,然后再查看第一个字符,效率会更低。
if (! my_string.empty())
test = my_string[0];
else
test = 0;
相反,我可以只查看第一个字符,而不需要检查字符串是否为空。
test = my_string[0];
std::string::empty
。 - 101010std::string x = "123"; x[0] = 0; assert(x[0] == 0 && !x.empty());
这段代码创建了一个名为“x”的字符串变量,其值为“123”。然后,将字符串中的第一个字符更改为ASCII码为0的空字符。最后,使用assert函数检查第一个字符是否为0且字符串不为空。 - user1084944