簡體   English   中英

std :: basic_fstream :: put()無效

[英]std::basic_fstream::put() has no effect

我有以下代碼:

#include <iostream>
#include <fstream>

int main(int argc, char *argv[]) {
    if (argc != 2) {
        std::cout << "Usage: basics <file>" << std::endl;
        return 0;
    }

    std::basic_fstream<unsigned char> stream;

    stream.open(argv[1], std::fstream::out);
    stream.put('T');
    stream.put('E');
    stream.put('S');
    stream.put('T');
    stream.flush();
    stream.close();

    return 0;
}

正在創建文件,但當我在編輯器中打開它時,里面沒有任何內容。 我的編譯器是gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
它出什么問題了?

引用std :: basic_ostream :: put

與格式化輸出函數不同,如果輸出失敗,此函數不會設置failbit。

即使您檢查流狀態,也不會顯示任何錯誤。 但是,如果您嘗試使用格式化的輸出操作編寫某些內容,則會拋出std::bad_cast異常,因為在可能的原因中,沒有與該語言環境對應的方面,該操作完成后將對其進行檢查。

原始操作不關心本地化,因此它不會因為這個原因而失敗,而如果原始寫入失敗則會失敗。

的std :: has_facet

例外
std :: bad_cast if std :: has_facet(loc)== false。

實際上, std::ctype專門用於charwchar_t而不是unsigned char ,你必須手動完成。 對於en_GB.utf8std::has_facet<std::ctype<unsigned char>>( std::locale("en_GB.utf8") ) == false

暫無
暫無

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

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