繁体   English   中英

将文本写入二进制文件-有什么区别?

[英]Writing text to binary file - what's the difference?

我正在学习用C ++编写二进制文件。 我对结果有些困惑。 假设我有以下代码:

#include<fstream>
#include<string>
using namespace std;

int main(){
    ofstream file;
    string text = "Some text over here";

    file.open("test.bin",ios::out|ios::binary);
    file.write(text.c_str(), text.length());
    file.close();

    return 0;
}

我期望输出文件test.bin是“二进制的”,但是当我在记事本中查看它时,会看到普通的文本:

Some text over here

我的期望错了吗? 是什么使事物变成二进制,我应该用什么来实现它?

“二进制”一词含义的最“重要”定义仅来自数字可以取两个值之一的情况。 不管您怎么说,这些都没有关系(“ on” /“ off”,“ 1” /“ 0”,“ yes” /“ no”)。 重要的是只有两个状态。

牢记该核心定义。 但是您会发现在计算机世界中,根据上下文,还会大量使用“ binary”一词。

例如:有人编译一个特定的代码库时,将表示可执行文件映像的文件(例如Windows上的.EXE文件)简称为“二进制文件”或( “二进制文件”) ,并且您知道自己使用的是哪种可执行文件。 d正在谈论。)

你跨人会怎样有时谈论的文件格式为 “文本” “二进制”又一个令人困惑的区别跳闸。 但是今天的计算机是基于始终是二进制的系统(从技术上来说不必如此 所以,如果“文本”文件不存储最终二进制位的地方,是怎么回事他们储存在哪里? : - /

因此,将文件格式标记为“文本”的真正含义是说它“严格限制使用哪种二进制模式,这样它将仅使用在某些文本编码中有意义的那些模式”。 这就是为什么在文本编辑器中加载这些文件时它们看起来可读的原因。

因此,“文本文件格式”是所有“文件格式”的子集。 有时,当人们想要引用不在文本文件子集中的内容时,他们会称其为“二进制文件格式”。

混乱的空间很大! 但是结果是,在C ++中以“文本”与“二进制”模式打开文件时,您要做的就是告诉流,您只是使用加载时在文本编辑器中看起来不错的位模式。 以二进制格式打开时,要求将所有字节逐字发送到文件,而不是为了方便起见而尝试在换行符处理中处理跨平台文本文件差异。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM