2017-09-02 4 views
1

私は学校で働いているプログラムがあります。コードはコンパイルされ、学校のサーバー上で期待どおりに実行されますが、チェックするプログラムは私が望む以上に何かを出力しています。オブジェクトの前にC++ナンセンスオブジェクトが印刷されています

正しい出力は左側に、右側は右側にあります。矢印は問題のある行を示しています。

        > : 1, 5:06 
            >   : 1, 5:06 
            >     2. : 5:06 
Mayfield, Curtis: 1, 5:06     Mayfield, Curtis: 1, 5:06 
     Superfly: 1, 5:06       Superfly: 1, 5:06 
       2. Pusherman: 5:06        2. Pusherman: 5:06 

これは、プログラムが提供されたテキストファイルのいずれかで動作する方法です。ご覧のとおり、問題はありません。

King Crimson: 2, 21:29 
     Larks' Tongues In Aspic: 3, 15:33 
       2. Book of Saturday: 2:49 
       3. Exiles: 5:47 
       6. Larks' Tongues In Aspic, Part 2: 6:57 
     Three of a Perfect Pair: 1, 5:56 
       9. Larks' Tongues In Aspic, Part III: 5:56 
Larkins, Ellis: 1, 2:44 
     Jazz Piano III (A Smithsonian Collection): 1, 2:44 
       2. Between the Devil and the Deep Blue Sea: 2:44 
League of Crafty Guitarists: 1, 2:37 
     Intergalactic Boogie Express: 1, 2:37 
       3. Larks' Thrak: 2:37 
Lewin, Michael: 1, 5:25 
     A Russian Piano Recital: 1, 5:25 
       2. Balakirev, The Lark: 5:25 
Paderewski, Ignace: 2, 6:00 
     Josef Hofmann & Ignace Jan Paderewski Play Liszt: 1, 3:03 
       5. Schubert-Liszt, Hark, Hark, The Lark: 3:03 
     Paderewski Plays Concert No. 1: 1, 2:57 
       7. Schubert-Liszt, Hark, Hark the Lark: 2:57 

私はそれはチェッカーが動作しますが、私はどちらかそれについて何も知らない方法を知らなくて難しいです知っています。これがなぜ起こるのかについてのアイデアは何ですか?

+2

あなたがデータを正しく読み取っていないように見えます。 –

+3

'lib'にはあなたが思っているよりも多くのエントリがあります。特に、空の文字列をキーとするエントリがあります。理由を理解する。問題はあなたが示していないコードにあります。 –

+1

データを読み込むときに 'while(!eof())...'アンチパターンのようなものを使って問題があると予測します:https://stackoverflow.com/a/5605159/12711 –

答えて

0

マイケルバーが正しい。 while(!file.eof)ループを使用していましたが、while(file.is_open())に切り替えて、2つのif(file.eof())を使用して終了しました。

+0

実行していた問題は修正されているかもしれませんが、解決策はまだ怪しいですね。 http://codereview.stackexchange.comに投稿したいと思うかもしれません。 –

関連する問題