如标题所示,下面的示例表明
std::string
能够存储多个字符串终止符。如何修剪字符串,使 size()
和 length()
反映其实际长度,即 c 字符串长度。有内置方法吗?
#include <iostream>
#include <string>
int main(int argc, char **argv)
{
std::string s;
s = "abc";
s[1] = '\0';
std::cout << "'" << s << "', " << s.size() << ", " << (int) s[1];
}
如果您可以访问 C++20 或更高版本,则有一个内置函数可以实现此目的:
std::erase
使用此功能,您可以删除所有嵌套的空字符,例如
std::erase(my_string, '\0');
这是有效的,因为结束字符串的最后一个
\0
位于end
,并且超出了erase
将使用的范围,因为擦除使用了[begin(), end())
如何修剪绳子
s[1] = '\0'
s.resize(std::strlen(s.c_str());
最好跳过不必要的作业
s.resize(1);