Cześć
Mam problem ze zrozumieniem błędu: wczytuje cała linie getline() i wyjmuję z niej pojedyncze wyrazy które umieszczam w vectorze. Jeżeli ostatni wyraz to pojedynczy znak to mój kod go zignoruje i nie pokaże ostatniego wyrazu (znaku), problemu nie ma gdy ostatni wyraz to min. dwa znaki lub gdy w getline() wpisze jedynie jeden znak.
Dlaczego tak się dzieje? Na czym polega błąd?
W moich próbach w else if wpisywałem: elseif(i==NULL); else if(i=='\0') i bez zmian
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector <string> song;
vector <string> rememberSong;
string line, songWord, rememberWord;
getline(cin, line);
for(int i=0; i<line.length(); i++) {
songWord="";
if(line[i]==' ') {
songWord.insert(0,line,0,i);
song.push_back(songWord);
line.erase(0,i+1);
i=0;
cout<<"songWord: " << songWord << " dlugosc " << songWord.length()<<endl;
} else if(i==line.length()-1) {
songWord.insert(0,line,0,i+1);
song.push_back(songWord);
cout<<"songWord: " << songWord << " dlugosc " << songWord.length()<<endl;
}
}
cout<<endl;
cin.sync();
getline(cin, line);
for(int i=0; i<line.length(); i++) {
rememberWord="";
if(line[i]==' ') {
rememberWord.insert(0,line,0,i);
rememberSong.push_back(rememberWord);
line.erase(0,i+1);
i=0;
cout<<"rememberWord: "<<rememberWord<<" dlugosc "<<rememberWord.length()<<endl;
} else if(i==line.length()-1) {
rememberWord.insert(0,line,0,i+1);
rememberSong.push_back(rememberWord);
cout<<"rememberWord: "<<rememberWord<<" dlugosc "<<rememberWord.length()<<endl;
}
}
return 0;
}