0

私はファイル (以下に示すサンプル) から行ごとに読み取りを行っており、行ごとに 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;
 }
4

1 に答える 1

0

問題の原因はわかりませんが、ファイルから読み取った各行の末尾にタブ (「\t」) 文字を追加して「修正」しました。

于 2013-03-30T04:18:28.787 に答える