c++文件读取之write参数理解

在网上查了一些资料,了解了write函数。


write(constant char*content,int size)参数的解释:

-------------content是 char类型的一个指针

-------------size指的是这个content内容的大小


面对这个函数,心中有以下疑问:

1、为什么content是一个char类型的指针,而不是其他类型的指针

理解: 首先char类型是一个byte的,而一个byte是内存中最小的单元,任何其他的c++的基本类型都可以转化为一个byte或者几个byte,也就说可以转化为一个char类型或者几个char.  size参数就是计算content有多少个byte,这样就把content里面所有的byte都写入文件了,在这里我们暂时不考虑类型的问题,也就是说不考虑传给content的是int、还是double类型,实际上也不用考虑是什么类型,因为这个函数的目的就是把content里面的所有byte存到文件里面就可以了。


2、为什么content是一个指针,而不是一个数组或者其它的什么的

理解:我们知道在c++里面,不管是传递指针还是数组,实际上传递的都是地址,都是值传递,只不过这个值是一个地址(这个地址在指针变量里面保存)。数组传递的就是首地址,所以在write里面传递指针,就是把首地址(int型和double型的首地址就是他们本身的地址)传进去,然后再根据size的大小,把这个首地址所指的内容一个byte一个byte的向文件里面写东西。


3、若传递给content的是一个对象,并且对象里面有指针,这个write函数就会有问题,为什么呢?

理解:这个就与这个size有关了,一般情况下我们就算大小就是用sizeof()这个操作来计算的,如果对象里面有指针,这个sizeof()计算的不是这个对象的真正的大小。所以前后不一致造成问题。

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C++ 中,可以使用标准库中的文件流(fstream)来进行文件的读写操作。文件流有两种类型:ifstream 和 ofstream,分别用于读取和写入文件。 1. 文件读取 下面是一个简单的例子,演示了如何打开一个文件读取其中的内容: ```c++ #include <iostream> #include <fstream> #include <string> int main() { std::ifstream file("example.txt"); // 打开文件 std::string line; while (std::getline(file, line)) { // 逐行读取文件内容 std::cout << line << std::endl; // 输出每行内容 } file.close(); // 关闭文件 return 0; } ``` 首先使用 `ifstream` 类型的对象 `file` 打开了一个名为 "example.txt" 的文件。然后使用 `std::getline()` 函数逐行读取文件内容,并将每行内容存储到 `line` 变量中。最后输出每行的内容并关闭文件。 2. 文件的写入 下面是一个简单的例子,演示了如何打开一个文件并向其中写入内容: ```c++ #include <iostream> #include <fstream> int main() { std::ofstream file("example.txt"); // 打开文件 file << "Hello, World!" << std::endl; // 写入文本 file.close(); // 关闭文件 return 0; } ``` 首先使用 `ofstream` 类型的对象 `file` 打开了一个名为 "example.txt" 的文件。然后使用 `<<` 运算符向文件中写入一行文本内容,并在末尾添加了一个换行符。最后关闭文件。 注意事项: - 在使用文件流进行读写操作之前,需要先包含 `<fstream>` 头文件。 - 打开文件时,需要指定文件的名称和打开模式。打开模式可以是 `std::ios::in`(读入)、`std::ios::out`(写出)或它们的组合。例如,`std::ifstream file("example.txt", std::ios::in);` 指定了以读入模式打开 "example.txt" 文件。 - 在读取文件内容时,可以使用 `std::getline()` 函数逐行读取,也可以使用 `>>` 运算符逐个读取(例如读取整数、浮点数等)。 - 在写入文件内容时,可以使用 `<<` 运算符逐行写入,也可以使用 `write()` 函数指定写入的字节数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值