std::string s = ...;

.....
assert(s.length() == strlen(s.c_str()));

 

一般认为这段代码是不会断言失败的,但是实际上这段代码可能是会断言失败的

 

std::string s = "ABCD";
s[2] = '\0';
std::cout << s.length();
std::cout << strlen(s.c_str());
std::cout << s.c_str();
assert(s.size() == strlen(s.c_str()));

 

我们可以看到s的length()返回4(即s的实际长度),strlen(s.c_str()返回2(即s中内容作为字符串的长度)

相关文章:

  • 2022-02-21
  • 2021-07-07
  • 2022-12-23
  • 2021-11-09
  • 2021-08-18
  • 2021-09-12
猜你喜欢
  • 2021-07-24
  • 2021-10-26
  • 2022-01-22
  • 2022-12-23
  • 2021-11-20
  • 2021-08-08
相关资源
相似解决方案