1

put我对 in 或 in 的其他衍生物有疑问fstream.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

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

4

1 回答 1

1

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

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

于 2013-07-08T18:52:28.827 回答