gpt4 book ai didi

c++ - 如何修剪 vector 字符数组或字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:12 24 4
gpt4 key购买 nike

我正在按照这段代码进行修剪

    std::string tcp_read(int listen_at_port=8001){

using namespace std;
using namespace boost::algorithm;
std::vector<char> received_data(512);
tcp_read(received_data, listen_at_port);
string str1(received_data.begin(),received_data.end());
trim_right(str1);
return str1;
}

我单步执行了代码,我的 received_data 通常是 = "add 8002(这里向前缓冲区填充空格直到 [511th] 位置)"

现在,当我执行 trim_right 时,我希望 str1 大小变为 8,但返回时它仍然是 512,为什么?

我如何真正修剪和更改大小,以便字符串恰好容纳到最后一个非空格字符

最佳答案

如其他 answer 中所述,您的 vector 填充了零,这些零不被视为 whitespace,因此 trim_right 不会从字符串中删除那些。解决问题的一个简单方法是不使用 vector 的开始和结束迭代器构造字符串,而是使用 string( char const * ) 构造函数。这也消除了对 boost::trim_right 的调用。

std::string tcp_read(int listen_at_port=8001)
{
using namespace std;

std::vector<char> received_data(512);
tcp_read(received_data, listen_at_port);

return string( received_data.data() );
// or return string( &received_data[0] );
}

关于c++ - 如何修剪 vector 字符数组或字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16751711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com