1

スペース/改行で区切られた数字のファイルを読み込んでいます。stringstreams と ifstreams を試した後、単純さ、読みやすさ、または効率の点で、C++ はこの単純なタスクの fopen と fscanf をあまり改善していないようです。

堅牢性はどうですか?fscanf が期待する数のアイテムを返したことを確認したので、これは問題ではないようです。私が考えることができる唯一の利点は、障害を処理するためのより多くのオプションを提供する stringstream です。

fscanf を使用した簡単な例を次に示します。

FILE * pFile;
pFile = fopen ("my_file.txt","r");
if( pFile == NULL ) return -1;

double x,y,z;
int items_read;
while( true )
{
    items_read = fscanf( pFile, "%lf %lf %lf", x, y, z );
    if( items_read < 3 ) break;  // Checks for EOF (which is -1) or reading 1-2 numbers

    std::cout << x << " " << y << " " << z << "\n";
}

: セキュリティを強化するために、Visual Studio で fopen/fscanf を fopen_s/fscanf_s に置き換えることができます。

4

1 に答える 1