[C++][IO流][流输入输出][截断明白]具体讲授

[复制链接]
发表于 2026-1-15 01:25:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

1.流输入输出阐明

1.<<实验次序



  • 链式操纵的次序:当使用多个<<操纵符举行链式插入时,实验次序是从左到右的

    • 每个<<操纵都将数据插入到前一个流的输出中

  • 设置流状态

    • 在实验<<操纵之前,全部设置(如std::setw(), std::setfill(), std::hex等)都会影响到后续插入的操纵
    • 这些设置是全局性的,一旦设置,它们会一连影响后续的全部插入,直到再次改变或重置

  • 插入数据

    • 一旦流状态被设置好,流会根据当前的格式化状态(如宽度、添补字符和进制)处理惩罚随后的插入操纵
    • 每次插入操纵都会根据当前流的状态输特别式化后的结果

  • 示例代码
    1. ss << std::setw(2) << std::setfill(‘0’) << std::hex \
    2.         << distribution(generator);
    复制代码

2.>>实验次序



  • >>运算符用于从输入流中提取数据,其实验次序和影响次序与<<有一些相似之处
  • 区别:流状态

    • 在实验>>操纵之前,流的状态(比方有效性、错误状态、EOF等)会影响后续的提取操纵

      • 假如流的状态是错误的(流已经到达竣事或碰到读取错误),则提取操纵将失败

    • 一旦流读取失败,后续的>>操纵将不会实验,直到流状态被重置


2.截断(trunc)明白



  • 文件阶段的寄义

    • 截断到零:假如打开一个已存在的文件并以std::ios::trunc模式打开它,文件的全部内容将被删除,文件的巨细变为零

      • 这意味着你会清空文件中的全部数据

    • 指定长度的截断:固然C++的尺度库没有直接提供指定长度截断的功能,但可以通过其他体系调用(如 POSIX 中的 ftruncate)实现

  • 形象明白:截断在文件操纵中的通常意义是抛弃文件的原有内容,并准备写入新的数据

    • 清空文件:假如文件已经存在,它的内容会被清空,文件巨细变为零
    • 写入新内容:接下来可以写入新的数据,这些新数据将更换原有的内容

  • 注意事项

    • 数据丢失:使用trunc会永世删除文件中的数据,因此在使用时必要警惕
    • 文件必须存在:对于trunc模式,文件必须已存在,否则会出现错误


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表