文件不存在创建并写入数据

ops/2024/9/24 23:26:48/

一、背景

之前遗留了一个问题,就是c++没有文件创建文件的代码,这边整理一下,下次可以直接使用

二、实现


#include <iostream>
#include <fstream>
#include <vector>#define PATH_SEPARATOR_CHAR '/'
#define PATH_SEPARATOR_STR "/"using namespace std;bool checkFileExist(const string &filePath) {fstream fs;fs.open(filePath, ios::in);if (!fs) {cout << "不存在该文件" << endl;ofstream out(filePath);if (out) {//创建成功cout << "创建成功" << endl;} else {//创建失败cout << "创建失败" << endl;return false;}} else {cout << "文件已存在" << endl;}return true;
}std::string GetProjectPath() {std::string currentFilePath(__FILE__);string str = currentFilePath.substr(0, currentFilePath.find_last_of('/'));return str;
}std::string JoinPath(const std::string &existPath, const std::string &newPart)
{if (existPath.back() == PATH_SEPARATOR_CHAR || existPath.empty()) {return existPath + newPart;}return existPath + PATH_SEPARATOR_STR + newPart;
}void writeRateToTxt(const vector<string> &infoVector) {string path = GetProjectPath();string fileName = "resultData.txt";string filePath = JoinPath(path, fileName);if (!checkFileExist(filePath)) {return;}fstream fs;fs.open(filePath, ios::in | ios::app);for (vector<string>::const_iterator it = infoVector.begin(); it != infoVector.end(); it++) {fs << *it << endl;}fs.close();
}int main()
{vector<string> vec(2);vec[0] = "jim";vec[1] = "kevin";writeRateToTxt(vec);
}

上述的代码实现了写文件的过程,没有文件就创建文件并写文件。需要着重指出的是ios::app是续写。

实现效果

jim
kevin

但是这边还遗留一个问题,就是重新写的时候怎么清除文件中的内容。帖子说的方法是ios::trunc。但是实验了好像不行。

三、总结

未完待续


http://www.ppmy.cn/ops/16133.html

相关文章

MySQL无法远程连接方案解决(示例)

应老表要求写一个MySQL无法远端访问的解决方案&#xff0c;不要问我怎么知 道&#xff0c;因为Oracle厂长是我表弟。。。 按照下面的步骤&#xff0c;一步一步执行一遍即可&#xff1a; -- 第一步&#xff1a;登录好 mysql -u root -p -- 第二步&#xff1a;更改host为全匹…

Qt实现XYModem协议(四)

1 概述 XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据&#xff0c;并且每个块都使用一个校验和过程来进行错误检测。使用循环冗余校验的与XMODEM相应的一种协议称为XMODEM-CRC。还有一种是XMODEM-1K&am…

设计模式之享元模式

一、详细介绍 享元模式是一种结构型设计模式&#xff0c;通过共享对象来有效支持大量细粒度对象的复用&#xff0c;减少内存消耗并提高性能。这种模式通过共享已经存在的相同或相似对象&#xff0c;而不是每次请求都创建新的对象&#xff0c;来减少系统中对象的数量&#xff0c…

yolo-驾驶行为监测:驾驶分心检测-抽烟打电话检测

在现代交通环境中&#xff0c;随着汽车技术的不断进步和智能驾驶辅助系统的普及&#xff0c;驾驶安全成为了公众关注的焦点之一 。 分心驾驶&#xff0c;尤其是抽烟、打电话等行为&#xff0c;是导致交通事故频发的重要因素。为了解决这一问题&#xff0c;研究人员和工程师们…

多台机器的docker容器的跨主机ROS通信

docker启动时&#xff0c;会在宿主主机上创建一个名为docker0的虚拟网络接口&#xff0c;默认选择172.17.0.0。docker0只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥&#xff0c;它可以使容器和主机相互通信&#xff0c;容器与容器间通信。 问题是&#xf…

竞赛报名赛事管理系统技术分析

竞赛报名赛事管理系统是一个复杂的应用&#xff0c;涉及到用户管理、赛事信息管理、报名管理、成绩管理等多个方面。使用PHP框架来开发这样的系统&#xff0c;可以大大提高开发效率&#xff0c;保证代码的可维护性和可扩展性。以下是对基于PHP框架的竞赛报名赛事管理系统进行功…

2.6设计模式——Flyweight 享元模式(结构型)

意图 运用共享技术有效地支持大量细粒度的对象。 结构 其中 Flyweight描述一个接口&#xff0c;通过这个接口Flyweight可以接受并作用于外部状态。ConcreteFlyweight实现Flyweight接口&#xff0c;并作为内部状态&#xff08;如果有&#xff09;增加存储空间。ConcreteFlywe…

2024考研复试上岸逆袭,机试部分准备

24考研复试机试准备的题目 主要参考书目《王道机试书》《武大历年机试题》 参考代码地址&#xff1a;https://github.com/baizhu0414/CppFiles 另&#xff0c;由于不允许讨论复试题目&#xff0c;因此在此仅提供几点复习建议&#xff1a; 在牛客网做题&#xff0c;里面有很多大…