在C++17中将文本文件(*.txt)读入到std::string数组

编程语言 2026-07-09

在使用下面的函数将文本文件以流的方式写入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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章