2

ホストファイルのエントリを管理するアプリケーションを作成しています。そこで、HOSTSファイルにアクセスして読み取ろうとする小さなコードをC++で記述しました。

#include <iostream>
#include <stdlib.h>
#include <fstream>

using namespace std;

int main(void)
{
    string line;
    fstream f ("C:\Windows\System32\drivers\etc\hosts");

    if ( f.is_open() )
    {
        while ( f.good() )
        {

            getline(f,line);
            cout << line << endl;
        }

        f.close();
    } else
        cout << "Error" << endl;

    system("pause");

    return 0;
}

この質問をする前に、私はこれを読みました:etc\hostsファイルを編集します

だから、はい、私は管理者としてプログラムを実行しようとしましたが、それでも動作しません。私のプログラムは、管理者として実行されているホストをどのように読み取り/編集できますか?

4

2 に答える 2

5

C ++では、文字列リテラルで円記号を引用符で囲む必要があります。だから試してみてください:

fstream f ("C:\\Windows\\System32\\drivers\\etc\\hosts");

これは、のような単一の円記号を使用する\nことは、コンパイラにとって特別なことを意味するためです。

于 2011-11-05T03:24:26.053 に答える
1

おそらく問題は、ファイルパスでエスケープされていないバックスラッシュを使用していること\\です。

于 2011-11-05T03:23:52.643 に答える