2011-08-05 12 views
3

タイトルと著者のリストを含むファイルを読み込もうとしていますが、ファイル内の各行を区切る改行文字を無視できる必要があります。リスト形式のファイルを読むときに改行文字を無視する方法

利己的な遺伝子

リチャード・ドーキンス

Aすばらしい新世界

オルダス・ハクスリー

は例えば、私の.txtファイルには、このようなリストを持っているかもしれません太陽はまた上昇する

アーネスト・ヘミングウェイ

私はこの情報を保存するために、並列配列を使用する必要があり、その後、そのようなデータをフォーマットすることができる:

利己的な遺伝子(リチャード・ドーキンス)

私がしようとしていましたデータを読むためにのgetlineを使用しますが、私はタイトルと著者をフォーマットする行くとき、私はこれを取得する:

利己的な遺伝子

(リチャード・ドーキンス

私はファイルからリストに読んだとき、私は改行文字を無視するにはどうすればよい

これは私がこれまで持っているものです。

int loadData(string pathname) 
    { 
    string bookTitle[100]; 
    string bookAuthor[100]; 
    ifstream inFile; 
    int count = -1; //count number of books 
    int i; //for variable 

    inFile.open(pathname.c_str()); 
    { 
     for (i = 0; i < 100; i++) 
     { 
      if(inFile) 
      { 
       getline(inFile, bookTitle[i]); 
       getline(inFile, bookAuthor[i]); 
       count++; 
      } 
     } 
     inFile.close(); 
     return count; 
    } 

私は非常に任意の助けに感謝します!

リチャード

EDIT:

これは私の出力機能である:

void showall(int count) 
    { 
     int j; //access array up until the amount of books 
     for(j = 0; j < count; j++) 
     { 
      cout << bookTitle[j] << " (" << bookAuthor[j] << ")"; 
      cout << endl; 
     }  
    } 

私はここで間違って何かをやっていますか?

+1

'getline'は改行文字を削除する必要があります。おそらくあなたはUNIXマシン上でDOSファイルを使用していますが、復帰文字は改行されて改行として解釈されていますか? – Potatoswatter

+0

このコードは、 'std :: getline'のどちらかの呼び出しが失敗すると悪く動作します。ちょうどFYI。 –

+0

http://stackoverflow.com/questions/1581539/how-to-identify-a-new-line-in-c –

答えて

2

@Potatoswatterは、通常、std::getlineは改行文字を削除します。まだ改行が進んでいる場合は、おそらく改行のために\nというシステムを使用していますが、ファイルの改行は\r\nです。

余分な改行が文字列に追加された後に削除するだけです。

などでこれを行うことができます。 std::find_if<algorithm>std::isspace<clocale>std::not1<functional>です。

0

I GOT IT!問題は私が読んでいたファイルでした。インストラクターの.txtのタイトルと作者でファイルをコピー&ペーストして、新しい.txtファイルに私たちを教えてくれました。皆さん、助けてくれてありがとう!

関連する問題