从品牌网站建设到网络营销策划,从策略到执行的一站式服务
写文件有三种模式:
站在用户的角度思考问题,与客户深入沟通,找到库伦网站设计与库伦网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都网站制作、企业官网、英文网站、手机端网站、网站推广、国际域名空间、雅安服务器托管、企业邮箱。业务覆盖库伦地区。
例如:文件原有内容为 ,在开始位置覆盖写入
abcd
,最后文件内容为 abcd56
。首先使用下面的代码进行尝试:
#include
int main()
{
std::ofstream ofile("test.txt");
ofile << "abcd";
}
输出的结果为 abcd
,原有内容被截断了。可是并没有设置 std::ios::trunc
标志。ofstream
默认只设置了 std::ios::out
。查阅 std::basic_filebufstd::ios::out
和 std::ios::out | std::ios::trunc
等价。想要在不设置 std::ios::trunc
或 std::ios::app
的情况下设置 std::ios::out
,只能使用 std::ios::in | std::ios::out
。因此修改代码为:
#include
int main()
{
std::fstream ofile("test.txt", std::ios::in | std::ios::out);
ofile << "abcd";
}
成功输出 abcd56
。覆盖写并没有被 C/C++ 标准直接支持,因此只能借助这种奇怪的组合实现。下面的写法也与其等价:
std::ofstream ofile("test.txt", std::ios::in);
ofile << "abcd";
std::ios::in | std::ios::out
和 C 语言的 r+
等价,所有也可以这样写:
FILE* ofile = fopen("test.txt", "r+");
fprintf(ofile, "abcd");
在底层的 Linux 有更直接的办法:
#include
#include
int main()
{
int fd = open("test.txt", O_WRONLY);
write(fd, "abcd", 4);
close(fd);
}
这段代码只用了简单的 O_WRONLY
标志,就实现了覆盖写。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图