踩了坑,两个地方需要注意,否则就会乱码或无法找到文件
(1)采用utf-8格式,对cpp文件进行编码,用utf-8的方式对内容尽心高度写,方法是std::setlocale(LC_ALL, ".UTF-8");
(2)visual studio的编译命令行添加 /utf-8 以增加对utf-8内容的支持。
// testChineseFilePath.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
#include <string>
#include <filesystem>
#include <fstream>using namespace std;int main()
{std::cout << "Hello World!\n";string filePath = "E:/迅雷下载/测试中文读写.txt";std::setlocale(LC_ALL, ".UTF-8");if (!filesystem::exists(filePath)) {cout << filePath << " is not exist" << endl;return -1;}//设置当前路径filesystem::current_path(filesystem::path(filePath).parent_path());//读取文件ifstream fin(filePath);while (!fin.eof()){string line;getline(fin, line);if (line.size() > 0) {cout << line << endl;}}fin.close();//写出文件cout << filePath << endl;ofstream fout("输出文件.txt");fout << "write text to a file with chinese file name 中文" << endl;fout.close();return 0;}
运行效果
Hello World!
测试中文的读写算法
E:/迅雷下载/测试中文读写.txt