gpt4 book ai didi

c++ - std::basic_fstream::put() 无效

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:22:45 25 4
gpt4 key购买 nike

我有以下代码:

#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

Unlike formatted output functions, this function does not set the failbit if the output fails.

即使您检查流状态也不会显示任何错误。但是,如果您尝试使用格式化 输出操作编写内容,std::bad_cast异常将被抛出,因为在可能的原因中,没有与该语言环境对应的方面,在该操作完成时检查。

原始操作不关心本地化,因此它不会因此而失败,而如果原始写入失败,它就会失败。

std::has_facet

Exceptions
std::bad_cast if std::has_facet(loc) == false.

确实,std::ctype专门用于 charwchar_t不是unsigned char您将必须手动执行此操作。对于 en_GB.utf8 , std::has_facet<std::ctype<unsigned char>>( std::locale("en_GB.utf8") ) == false

关于c++ - std::basic_fstream::put() 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28325381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com