加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何修剪矢量char数组或字符串?

发布时间:2020-12-16 05:03:48 所属栏目:百科 来源:网络整理
导读:我正在按照此代码进行修剪 std::string tcp_read(int listen_at_port=8001){ using namespace std; using namespace boost::algorithm; std::vectorchar received_data(512); tcp_read(received_data,listen_at_port); string str1(received_data.begin(),re
我正在按照此代码进行修剪
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通常=“添加8002(此处缓冲区填充空格直到[511th]位置”)

现在当我做了trim_right时,我预计str1的大小会变为8,但是当它返回时仍然是512,为什么?

我如何实际修剪并更改大小,以便字符串可以容纳到最后一个非空格字符

解决方法

正如在其他 answer中所解释的那样,向量中填充了零,这些零不被视为空格,因此trim_right不会从字符串中删除它们.解决问题的一个简单方法是不使用向量的开始和结束迭代器构造字符串,而是使用字符串(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] );
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读