【发布时间】:2019-12-24 19:20:13
【问题描述】:
我正在尝试制作一个程序来分割向量中的空白字符串,但它不会删除原始字符串的第二部分。
#include<iostream>
#include<string>
#include<string.h>
#include<vector>
#include<algorithm>
#include<cmath>
#include<sstream>
#include<fstream>
#include<list>
#include<numeric>
#include<map>
#include<iterator>
using namespace std;
int main(){
vector<string> words;
words.push_back("aa bb");
string& e=words[0];
string::iterator it=find(e.begin(),e.end(),' ');
if(it!=e.end()){
words.push_back(e);
e.erase(it,e.end());
string& e2=words.back();
it=find(e2.begin(),e2.end(),' ');;
e2.erase(e2.begin(),it+1);
}
for(auto& f:words)
cout<<f<<'\n';
}
【问题讨论】:
-
@ohndoeisabro 在此声明之后 words.push_back(e);引用 e 可能无效。
-
仅供参考,std::istringstream 为您完成所有这些工作。
-
@nonock 如果您使用特定于版本的
c++??标签,请在主c++标签之外使用它们(以获得更好的问题可见性)。另外,我在这里看不到任何 C++14 特定的内容,不知道您为什么认为该标签更适合。 -
auto& 在 C++14 上。