我刚刚开始阅读C++,发现C++具有C语言所没有的丰富的字符串操作函数.我正在读这些函数,遇到了c_str()
,从我理解的是,c_str
将一个可能是NULL结尾的字符串,也可能不是NULL结尾的字符串,转换成NULL结尾的字符串,这是真的吗?
有没有人能给我举一些例子,让我了解一下c_str函数的用法?
我刚刚开始阅读C++,发现C++具有C语言所没有的丰富的字符串操作函数.我正在读这些函数,遇到了c_str()
,从我理解的是,c_str
将一个可能是NULL结尾的字符串,也可能不是NULL结尾的字符串,转换成NULL结尾的字符串,这是真的吗?
有没有人能给我举一些例子,让我了解一下c_str函数的用法?
c_str
返回指向以null结尾的字符串(即C样式字符串)的const char*
.当您希望将std::string
的"内容"1传递给希望使用C样式字符串的函数时,它很有用.
例如,请考虑以下代码:
std::string string("Hello world!");
std::size_t pos1 = string.find_first_of('w');
std::size_t pos2 = static_cast<std::size_t>(std::strchr(string.c_str(), 'w') - string.c_str());
if (pos1 == pos2) {
std::printf("Both ways give the same result.\n");
}
100.
注:
?这并不完全正确,因为std::string
(与C字符串不同)可以包含\0
字符.如果是这样,则接收返回值c_str()
的代码将被误认为字符串比实际长度短,因为它会将\0
解释为字符串的末尾.