0

入力をテキスト ファイルから C++ ファイルに直接読み取ることができるプログラムを作成していました。ただし、ファイルの内容は、時間など、さまざまな形式で提供されます。入力ファイルは次のようになります。

Time(1) Price(1)
8:56:18 1250.00
9:00:25 1250.25
9:21:36 1250.50
9:23:32 1249.75

Time(2)
8:55:28
9:02:14
9:20:23
9:21:37
Price(2)
1680.50
1681.00
1680.50
1681.50

ファイルを読み取るための私のプログラムは次のとおりです。

int main()
{
    string file;
    cout << "Enter a file name to read input: ";
    cin >> file;

    ifstream file_name(file.c_str());

    while(!file_name.eof())
    {
        double input;
        file_name >> input;
        cout << input << endl;
    }
}

しかし、プログラムを実行すると、無限ループに陥り、画面に 0 が表示されるだけです。これは時間のフォーマットが原因ですか?

4

1 に答える 1

1

のデフォルトの動作file_name >> inputはタイプセーフであるため、file_nameバイトオフセットポインタは、Time(1)またはのような入力に対して増分することはありません8:56:18string input;代わりにを使用double input;して値を取得し、後で次の標準cライブラリを使用してそれらの型を確認できます。

#include <cstdlib>
.
.
.
atof()
atoi()
.

これがドキュメントです。

于 2012-12-06T03:39:33.060 に答える