using namespace std;
void print(vector<string>str) {
vector<string>::iterator it=str.begin();
while (it!=str.end()) {
cout<<*it<<endl;
it=it+1;
}
}
void collectWord(vector<string>&str,string line) {
const char* delim=" ,.-";
char* l =new char[line.length()+1];
strcpy(l,line.c_str());
char *pch;
pch=strtok(l,delim);
while (pch!=NULL) {
// cout<<pch<<endl;
str.push_back(pch);
pch=strtok(NULL,delim);
}
delete[] l;
}
int main() {
string line;
vector<string>spam;
ifstream spamfile("spam.txt");
if (spamfile.is_open()) {
while (getline(spamfile,line)) {
collectWord(spam,line);
}
spamfile.close();
}
else{
cout<<"Unable to open file"<<endl;
}
print(spam);
return 0;
}
Wenn ich dieses Programm in Terminal-Ausgabe laufen ist in Ordnung, aber wenn ich es in ide (Clion (c/C++)) laufen Ausgabe unterscheidetWenn ich dasselbe C++ - Programm nach Terminal und demselben Programm in IDE (CLion) laufen lasse, ist Ausgabe anders warum?
Bitte Formatieren Sie den Code. Es ist nicht lesbar. –
Dann haben Sie ub, weil Sie gelöschten Speicher in Ihrem Vektor speichern, wenn Sie die Zeichenfolge strtok. Verwenden Sie C++ - Methoden, um mit Strings umzugehen –
Verwenden Sie nicht 'strtok'. Sie haben bereits ein 'std :: string' Objekt; Verwenden Sie 'std :: string :: find_first_of()'. –