将字符串c ++截断为长度而不切割字

时间:2016-02-21 20:04:02

标签: c++ string split word

我输入一个C ++字符串,如果我的字符串大小大于64字符,我需要将其剪切成更小的字符串(存储到字符串向量)但我需要确保不要剪切字;所以当我找到空间时我需要分开;我写了一个代码,但我不确定这是解决问题的最佳方法。 任何帮助将不胜感激;这里是我写的代码。

void Truncate_string(string& S; vector<string>& T){
     int index;
     while(S.size()>64 && !S.empty()){
         index=63; // The index where the cut would be made
         while(index>0 && S.at(index)!=' ') --index; 
         if(index==0) index=63; // no space found
         T.push_back(S.substring(0,index));
         S=S.substring(index);
     }
 }

2 个答案:

答案 0 :(得分:1)

对于许多字符串操作问题,答案在标准库中。 std::string已经有一个成员函数可以执行此操作:

while (S.length() > 64) {
    std::string::size_type pos = S.rfind(' ', 63);
    if (pos == std::string::npos)
        break; // no 64-bit-or-less substring
    else {
        T.push_back(S.substr(0, pos));
        S.erase(0, pos);
    }
}
if (!S.empty())
    T.push_back(S);

这个版本对空间字符并不聪明;你可能应该在做回推时删除它们。但这是一个单独的问题。

编辑:这一点未经过仔细审核,因此可能会出现一个错误。

答案 1 :(得分:0)

这是我的尝试:

必须捕获空字符串或单字&gt; 64等边框情况

file struct

我确信有更好的迭代器解决方案