#define COLOR_RESET "\033[37m"//重置颜色为白色 #define COLOR_ERROR "\033[31m"//红 #define COLOR_INFO "\033[32m"//绿 #define COLOR_WARN "\033[33m"//黄 #define COLOR_DEBUG "\033[34m"//蓝 #define COLOR_FATAL "\033[35m"//紫 log_file << color << "[" << level << "] "<<COLOR_RESET<<COLOR_DEBUG<< "[" << file_name << ":" << msg->line << "] " << " "<<COLOR_RESET <<COLOR_INFO<< str_timestamp << " " << COLOR_RESET<<msg->msg << std::endl;文本文件会额外写入字符如何解决
时间: 2023-07-19 13:40:48 浏览: 95
如果在文本文件中写入了非ASCII字符,你需要确认文件的编码格式是否正确。如果你的文本文件是UTF-8编码,你可以在打开文件时使用"ofstream::out | ofstream::app | ofstream::binary"标志打开文件,并在写入数据时使用UTF-8编码。示例如下:
```c++
ofstream log_file("log.txt", ofstream::out | ofstream::app | ofstream::binary);
// 使用UTF-8编码写入数据
log_file << u8"这是一段UTF-8编码的文本" << endl;
```
在读取文件时,你需要使用正确的编码格式解析文本。例如,在C++中,你可以使用"std::wstring_convert"转换器将UTF-8编码的字符串转换为"std::wstring"类型的字符串,示例如下:
```c++
#include <locale>
#include <codecvt>
#include <fstream>
using namespace std;
// 打开文件
wifstream log_file("log.txt", wifstream::in | wifstream::binary);
// 将UTF-8编码的字符串转换为wstring类型的字符串
wstring_convert<codecvt_utf8_utf16<wchar_t>> converter;
wstring log_data = converter.from_bytes(log_file.str());
// 处理wstring类型的字符串
// ...
```
当然,你需要确认你的编译器支持C++11或更高版本的标准,以便使用"std::wstring_convert"转换器。
阅读全文