c ++结合擦除和删除字符串

时间:2014-06-04 12:31:37

标签: c++ string

我看到有人使用此行从存储在向量中的字符串中删除空格,但我无法理解使用擦除的原因并以此方式删除? 第二个问题:我怎样才能删除任何不是'num'或'-'的东西,而不是只删除空格?

这不是完整的代码,它只是一个片段,不会编译。向量只包含文本文件的原始字符串,字符串以逗号分隔,当前字符串可以包含除逗号之外的任何可能的字符。

vector <string> vecS;
ifstream vecStream;
while(vecStream.good()) {
 vecS.resize(i+1);
 getline(vecStream, vecS.at(i), ',');
 vector <string> vecS;          
 vecS.at(i).erase(remove( vecS.at(i).begin(), vecS.at(i).end(), ' '), vecS.at(i).end());
 i++
}

EDIT;添加了更多代码,希望现在更清楚

1 个答案:

答案 0 :(得分:1)

  

但我无法理解使用擦除的原因并删除它   方式是什么?

std::remove基本上重新排列序列,以便要移除的元素全部移位到序列的开头 - 该部分的过去的迭代器,并且有效地返回序列的新结尾。

但该片段中绝对不需要文件流:

vector <string> vecS;
// Do something with vecS

for( auto& s : vecS )   
    s.erase( remove_if( std::begin(s), std::end(s), 
                        [](char c){ return std::isspace(c); }), // Use isspace instead, that recognizes all white spaces
             std::end(s) );