我看到有人使用此行从存储在向量中的字符串中删除空格,但我无法理解使用擦除的原因并以此方式删除? 第二个问题:我怎样才能删除任何不是'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;添加了更多代码,希望现在更清楚
答案 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) );