私はこのコードを何時間もいじっていて、アドバイスを探しています。strtok を使用して文字列から単語を取得していますが、各行の最後に余分なデータを取得し続けています。次のコードがあります。
cout << "\n\n6. Load File:\n";
getline(cin, inFile);
inFile = path + inFile;
myfile.open(inFile.c_str());
while (myfile.is_open() == false) //check to make sure file exists
{
cout << "\nPlease enter in a valid file name: ";
getline(cin,inFile);
inFile = path + inFile;
myfile.open(inFile.c_str());
}
getline (myfile,line);
while ( myfile.good() ) //while the file is running, run below code
{
getline (myfile,line);
//cout << line;
char str[line.length()];
char * pch;
for (int i=0;i<line.size();i++) { //creates a char array from characters
str[i]=line[i];
}
pch = strtok(str," ,-!?\r\t\f\v\n\0|/\\_"); //eliminates whitespace,etc in char array
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,-!?\r\t\f\v\n\0|/\\_"); //grabs next word
}
}
myfile.close();
これで、このコードは目的の単語出力を提供しますが、各行の最後にメモリからのランダムなクレイジーな値が表示されます。以下を参照してください:
読み込みファイル:
cars1.txt
ジャロピー
ブルー
3402.99 \244\363P ラスト
バケット
ブラウン
44.99 P
レモン
イエロー
4226.99 99P
助けてください、そしてどうもありがとう!