-1

私は今日 c++ を始めたばかりで、このトピックに関する多くのフィードに目を通しました。検索中に、ignoreという関数が見つかりましたが、これは多少役に立ちました。私の最初の問題は、実行時に入力がスキップされることでした。これはおそらく \n がバッファ内に残っていることが原因であることがわかったので、cin.ignore() 関数を使用してそれをフラッシュしました。しかし、私はまだ私が望む出力を得ていません。これが私のコードです:

{

    time_t current;

    char event[30];
    char details[256];

    char outFileName[21];
    cout<< "Enter name of file to hold the input.[20 Character Max]:  ";
    cin>>outFileName;

    ofstream outFile(outFileName);

    cout<< "Event: ";
    cin.getline(event, 30, '\n');
    cin.ignore();
    outFile<< event<< '\n';

    cout<< "Details: ";
    cin.getline(details, 256, '\n');
    cin.ignore();
    outFile<< details<< '\n';

    current = time(NULL);
    outFile<< ctime(&current);

}

出力の場合、最初の行は黒で、2 行目は最初の行にあるはずのものをリストし、最初の文字も欠落しています。3 行目はシステム時間で問題ありません。

4

3 に答える 3

0

ファイルの名前を入力した直後に cin.ignore を置きます。からのキャリッジ リターンcin>>outFileName;は、次の cin に吸収されています。

また、ignore がここで使用する正しいコマンドかどうかもわかりません。これでうまくいかない場合は、cin.clear()またはを試してくださいcin.sync()。私はまだ C++ を学んでいるので、これを一粒の塩と考えてください。

于 2013-05-02T22:31:22.870 に答える
0

私は非常に混乱しています。ファイルから読み取ってから、ファイルに書き込もうとしていますか??

編集:あなたがやろうとしていることを理解したと思います。以下は無視して構いません。

ファイルから何も読み取っていません。cin.getline はキーボードから入力を取得します。必要なのは、ファイルの読み取りと書き込みを行うファイル オブジェクトをインスタンス化することです。

//Create a file that reads AND writes
std::fstream readAndWrite(outFile, std::ios::in | std::ios::out);

ofstream ではなく、ostream に注意してください (つまり、ifstream は読み取り用、ofstream は書き込み用、fstream は両方用)

//Check to see if the file opened
if(readAndWrite.is_open())
{
   cout<< "Event: ";
   readAndWrite.getline(event, 30, '\n');
   readAndWrite << event << '\n';

   //Same for the rest of your code

   //Close file
   readAndWrite.close();
}
else
    std::cout << "\nFile did not open! " << std::endl;
于 2013-05-02T22:36:50.330 に答える