调用空字符串的c_str
Calling c_str of empty string
这个代码片段是OK的还是会导致未定义的行为?
std::string s;
assert(strlen(s.c_str())==0);
如果不是未定义的行为,上面的断言会通过吗?
定义得很好,断言通过了。c_str()函数将始终返回一个有效的以零结尾的C字符串。
通常使用empty()来测试空字符串
是的,它将工作(如果您将()
附加到c_str
以使其实际调用函数)并且断言将通过
这是一个编译错误(如果您启用了断言),因为const char *(std::string::*)()
不能隐式地转换为const char *
。
(半开玩笑)
相关文章:
- 字符串变量,比如说"字符串str",可以直接复制到数组中吗?
- std::smatch str() 未返回正确的字符串
- 使用 str.erase() 的索引擦除字符串的元素?
- 在字符串中查找确切的子str
- 在 ss.clear() 之后使用 ss.str( " ") 用于新定义的字符串流
- .Net字符串是否可以在不复制的情况下交给fn(const char16_t*str)
- 从"char"到"const char*"的转换无效 [-fpermissive] str::atoi (字符串到整数)
- 字符串流.str().cstr()有问题吗
- 字符串中的 cin>>str+1 是什么C++?
- 我是否负责释放/删除stringstream.str()返回的字符串
- 流的内容和返回的字符串“str()”之间的差异
- 字符 *str;str= "HELLO" ;如何在不为字符串分配任何内存的情况下工作?
- 使用 str.at(x) 将字符串转换为 int
- 将字符串转换为无符号字符 str
- 在字符串 c++(无子字符串)上使用 str.find() 时执行操作
- 为什么当我们反转此函数中的字符串时,char *str 的指针没有改变?
- 使用 c.str 从字符串转换为 cstring
- 有没有使用 str.substr( ) 在给定位置提取子字符串的替代方法
- 使用str()和rdbuf()打印字符串流
- 转换str字符串以用于std::getline分隔符的字符串