gpt4 book ai didi

传递数值时 fstream.h 中函数的 C++ 可移植性问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:33 24 4
gpt4 key购买 nike

我对 putfstream.h 中的其他衍生品有疑问。当我想简单地编写如下内容时,我能否确保代码的可移植性:

#include <fstream>
#include <iostream>
using namespace std;
typedef unsigned char u8;
int main()
{
fstream f;
u8 ch;
f.open("deneme.txt",ios::out|ios::binary);
f.put(129);
f.close();
return 0;
}

当我将 128 写入 put 函数(将 char 值的类型作为参数)时,我取了一个 € 但对于 129,文本文件中没有任何内容。我看不到,无法选择。虽然光标出现在文件的开头,但记事本的 row,col 指针有趣的是 1,2

所以,有些东西是看不见的。同样根据教程,据我所知是一样的。我可以在 0255 之间写入而不存在可移植性问题吗?为了确保它在所有平台(编译器/操作系统等)中以二进制形式正确写入。我担心的是 char 类型,它的值范围会因平台而异。 put 函数是否存在这样的可移植性问题,或者从长远来看我是否需要担心它?好的,我知道该怎么做了。感谢所有试图帮助我的人。

最佳答案

事实上,根本没有问题。我不知道你使用什么操作系统。但是在像操作系统这样的 *nix 上,检查你是否得到你想要的东西是非常简单的。看看文件的大小我确定你会是 1 个字节。如果你在十六进制编辑器中打开它,你会得到值为 0x81 或 129 的字节。

关于编辑器,一些现代编辑器可能会认为这129个字符是UTF-8序列的开始,而且它至少有两个字节长度而显示错误的结果。另一个非现代编辑器可能会认为这是某种 8bit 本地编码,但这种编码可能无法描述字符 129,或者该编辑器使用的字体可能不包含这种字形。这是编辑器的问题,而不是您的程序。

关于传递数值时 fstream.h 中函数的 C++ 可移植性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17533660/

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