-1

一番下のwhileループの最中に、なぜなのかわかりません。

std::cout << line;

何も印刷しません。

フォルダー内の test.txt を開くと空になるため、test.txt ファイルは実際には書き込まれていないと思います。何かご意見は?

void Ticket::WriteTicket()
{
    std::string ticketInput;
    std::ofstream ticketFile("test.txt");

    ticketFile.open("test.txt");
    std::cout << "Please Enter Ticket Information: " << std::endl;
    getline(std::cin, ticketInput);

    std::cout << ticketInput << std::endl; //does print out the line
    ticketFile << ticketInput;
    ticketFile.close();

    //here for testing only
    std::string line;
    std::ifstream ticketRead("test.txt");

    while(getline(ticketRead, line));
    {
        std::cout << "something here?: " << line; // there is nothing here when it outputs
    }
}

編集(解決策):

主にBasile Starynkevitchから提供された上記の情報の一部を使用した後(まだ賛成できないため、ここに記載しました)、コードを機能させることができました!

また、本でいくつかの調査を行い、同様のプログラムのスタイルをコピーしました。別名、コードのどの部分をどこに置くか、そして入力が機能しました。私は出力を続けましたが、重要な部分はstd::ifstream::in出力用のファイルを開くことでした。

void Ticket::WriteTicket()
{
    std::string ticketInput;

    std::cout << "Please Enter Ticket Information: " << std::endl;
    getline(std::cin, ticketInput);

    std::ofstream ticketFile("Ticket.txt");

    ticketFile << ticketInput << std::endl;

    ticketFile.close();

    //here for testing
    std::ifstream ticketRead;
    ticketRead.open("Ticket.txt", std::ifstream::in);
    std::string line;

    while(getline(ticketRead, line))
    {
        std::cout << line << std::endl;
    }
}    

みんな助けてくれてありがとう!

4

3 に答える 3

2

出力バッファをフラッシュする必要があります。

ticketFile << ticketInput;

する必要があります

ticketFile << ticketInput << std::endl;

std::endlは、出力バッファーをフラッシュします。新しい行が必要ない場合は、std::flushを参照してください。

于 2013-11-02T07:43:47.887 に答える
-1

ファイルを書き込みモードで開く必要があるかもしれません。これを試して std::ofstream ticketFile("test.txt","w");

于 2013-11-02T07:47:16.737 に答える