このコードスニペットは、文字列、区切り文字(空白)、ベクトルを引数として受け取り、区切り文字に従って文字列を分割してベクトルに格納します。私はpush_backを使うとベクトルに何も格納していませんが、[]演算子を使うと動作します。誰かがpush_backが動作しない理由を説明できますか?ベクトル文字列push_backがC++で動作しません
void split(const string & input,char delim,vector<string> & elems){
stringstream ss;
ss.str(input);
string item;
int i = 0;
while(getline(ss,item,delim)){
//elems.push_back(item);
elems[i] = item;
i++;
}
}
int main(){
char delim = ' ';
vector<string> item(2);
string input;
getline(cin,input);
split(input,delim,item);
}
「作業していない」とはどういう意味ですか?私はあなたの 'elems'配列が関数の入力時に空ではないと推測します。 'std :: vector elems(100);'などで宣言しているので、 'split()'コードは101番目以降の要素に対して 'push_back()'を実行します。 –
私はpush_front()を使うべきですか? – user1762571
いいえ、スペースを割り当てないでください。 –