私はファイル (以下に示すサンプル) から行ごとに読み取りを行っており、行ごとに strtok を使用して、タブで分割された要素を取得しています (コードに示すように)。ここで、データを含むファイルを作成するときは、「A」と入力し、tab と入力し、「10」と入力して Enter を押します。この場合、数値が印刷されると、その後に奇妙な文字が続き、場合によっては文字/数字が続きます。この問題の「パッチ」は、次の方法でデータを入力することです: 「A」と入力し、タブを押し、「10」と入力してタブを押します。なぜこれが起こっているのか、誰かが私に説明できますか?それを修正するより良い方法はありますか?
sample.txt
A 10
B 20
C 30
//str contains a line of the file
char * pch = strtok (str,"\t");
//print character
if(pch !=NULL){
cout<<pch<<endl;
}
//print number
pch = strtok (NULL, "\t");
if(pch !=NULL){
cout<<pch<<endl;
}