簡體   English   中英

C ++文件到fstream嗎?

[英]C++ FILE to fstream?

我不是這方面的專家,但是我有以下代碼:

FILE *OUTPUT_FILE;

OUTPUT_FILE = fopen(file, "a+");

fprintf(OUTPUT_FILE, "%s", &keys );

fclose(OUTPUT_FILE);

我想將其傳遞給fstream語法

喜歡

ofstream fs;

????

它們包含在此功能中:

int Store(int keys, char *file)

我知道這是一個C函數,但是由於我正在學習C ++,所以我想知道如何將其轉換為C ++

對不起,我不知道還有什么或者fs是否與fopen兼容。

更多信息:

謝謝大家,但似乎忽略了一些價值觀

    int Store(int keys, char *file)
    {


    ofstream output_file("log.txt");
    output_file << keys; 
    output_file.close();

    cout << keys;

    return 0;
    }

當它超出文件的大小時,我只看到一個D,我可以看到控制台上鍵的十六進制值,但未打印在文本上。

首先,通常應將ALL_CAPS保留給宏使用-將其用於保存FILE *的普通變量通常是一個糟糕的主意。

至於其余的,它看起來像這樣:

std::fstream output_file(file, std::fstream::in | std::fstream::out | std::fstream::app);
output_file << keys;

不過,這可能有點錯誤-現在您的函數原型說keys是一個int ,但是您要使用%s格式將它傳遞給fprintf ,該格式用於字符串,而不是int 照原樣,代碼會產生未定義的行為,並且不能完全確定您真正想要的是什么。 我猜測是合理的,但我不太確定。

編輯:如果您嘗試寫出keys的原始字節,則看起來像這樣:

output_file.write(reinterpret_cast<char *>(&keys), sizeof(keys));

感謝您的建議@ildjarn。

http://www.cplusplus.com/reference/iostream/ostream/write/

重要的是要注意,您可以在C ++中使用相同的C風格編寫。 因此,您所有的C代碼都將在C ++中運行! 這通常是更幸福的解決方案,尤其是對於不需要快速閃電的IO而言。

要使用流:

std::ofstream foo; //Declaring the ofstream object
foo.open("file_name"); //Setting the output file name
foo<<keys; //Now it's ready to take << input!
foo.close(); //When you're done with the file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM