std::string 能够存储多个 ' '。怎么修剪?

问题描述 投票:0回答:2

如标题所示,下面的示例表明

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++ std
2个回答
0
投票

如果您可以访问 C++20 或更高版本,则有一个内置函数可以实现此目的:

std::erase

使用此功能,您可以删除所有嵌套的空字符,例如

std::erase(my_string, '\0');

这是有效的,因为结束字符串的最后一个

\0
位于
end
,并且超出了
erase
将使用的范围,因为擦除使用了
[begin(), end())


0
投票

如何修剪绳子

s[1] = '\0'
s.resize(std::strlen(s.c_str());

最好跳过不必要的作业

s.resize(1);
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.