在C++17中将文本文件(*.txt)读入到std::string数组
在使用下面的函数将文本文件以流的方式写入std::string时,输出的字符串开头总是带有一个空格和一个方块符号,与std::cout一起使用的.c_str() 函数只会打印出第一个字符。
#include<iostream>
#include<sstream>
#include<string>
const char* GetTextFile(const std::string& file_path,std::string& return_str)
{
std::ifstream file(file_path);
if (!file.is_open())
{
std::cout << "Error loading file:\t" << file_path << '\n';
return nullptr;
}
std::stringstream buffer;
buffer << file.rdbuf();
return_str = buffer.str();
//return_str.erase(return_str.begin() + 0, return_str.begin() + 2);
return return_str.c_str();
}
const std::string file_path = "dir\file_name.ext";
int main()
{
std::string text;
const char * c_style = GetTextFile(file_path,text);
std::cout<<text<<'\n';
std::cout<<c_style<<'\n';
}
解决方案
答案如 @marcinj所述,问题在于文件采用UTF-16编码格式,将其改为UTF-8即可解决问题。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。