概述
C++入门(21):二进制文件、C风格字符串
二进制文件
可以通过写入二进制数据的办法来存储各种复杂的数据类型;
把数据写入二进制文件,其调用语法为:
std::ofstream fileOutput("filename",std::ios::binary);
如果想把新数据追加到现有数据后面,需要加上 std::ios.app
,即
std::ofstream fileOutput("filename",(std::ios::binary) | (std::ios.app));
写二进制需要调用 write() 函数。它两个参数:第一个是将被写入文件的二进制数据在内存里的地址,这个值必须转换为一个char类型的指针;第二个参数是将被写入的二进制数据以字节计算的总长度,这个值必须精确,最精确的办法是用 sizeof 操作符来获得它。
比如:
int number = 345678;
fileOutput.write(reinterpret_cast<char *>(&number), sizeof(number)) ;
<<
操作符是把文本发送过去,write() 函数则是把内存里的数据(它们永远是二进制的)复制过去,由于“发送”和“复制”的区别,write()函数的第一个参数必须是一个指针(某给定内存块的地址)。
C风格字符串
strncpy()
函数有3个参数:第一个参数是目的地变量,第二个参数是源变量,第三个参数是本次复制的最大字符个数;
c_str()
函数将把一个C++字符串转换为一个C字符数组(它会自动追加一个空白字符作为字符串结束标记)。
可以先创建一个fstream类型的变量,然后在打开文件时使用std::ios::out
或 std::ios::in
作为标志之一来表明要进行写或者读操作。
读出数据read()
std::ifstream fileInput("filename", std::ios::binary); fileInput.read(reinterpret_cast<char *>(&var),sizeof(var)); //执行之后就可以通过var变量访问从文件读出来的数据了
大端字节(big endian):数据的最高位字节在内存里被存储在最前面;
小端字节(little ebdian): 数据的最高位字节在内存里被存储在最后面。
随机访问二进制文件
ifsteram 流有一个名为 get 的指针,它指向下次读操作将读取的数据;ofstream 流有一个名为 put 的指针,它指向下次写操作将写入的位置;fstream流有get和put两个指针。
get和put指针的当前位置可以用 tellg() 和 tellp() 函数分别查出来。这两个函数都将返回一个pos_type
类型的值,本质上是一个 long 整数,用来标明 get 或 put 指针距离文件开头有多少个字节。
seekg()和seekp(): 第一个参数是移动距离;第二个参数可选,默认从文件开头算起,可取值为std::ios::begin、std::ios::end、std::ios.cur
;
文件的长度等于指针在文件末尾时的 tellg() 减去指针在文件开头时的 tellg()。
命令行参数
有些字符(如句点 . 和星号 * )在命令行里有其特殊的含义,如果想把它们用作命令行参数,必须用单引号把它们括起来。
C++入门(20):字符串
最后
以上就是寒冷蜜粉为你收集整理的C++入门(21):二进制文件、C风格字符串C++入门(21):二进制文件、C风格字符串的全部内容,希望文章能够帮你解决C++入门(21):二进制文件、C风格字符串C++入门(21):二进制文件、C风格字符串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复