csdn_zyp2015
代码搬运工@@
采纳率50%
2018-01-18 06:00

vs2015 C++读取文件输出内容,总是显示乱码

5
已采纳

#include
#include
#include
#include
#include
using namespace std;
int main()
{
ifstream sfile("1.txt");
if (!sfile)
{
cerr << "无法打开文件" << endl;
system("pause");
return -1;
}

string line;
vector<string> word;
while (getline(sfile, line))
{
    word.push_back(line);
}
sfile.close();
//for (auto it :word)
vector<string>::const_iterator it = word.begin();
while (it != word.end())
{
    istringstream line_str(*it);
    string words;
    while (line_str >> words)
        cout << words << " ";
    cout << endl;
    ++it;
}
system("pause");
return 0;

}
图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

15条回答

  • weixin_41632434 浩子乄 3年前

    你将文件编码修改一下

    点赞 评论 复制链接分享
  • u014013254 一天的sorrow 3年前

    你看一下,自己原源文件格式是哪一种,如果不能修改原文文件或者是禁止修改,可以在代码中进行转码

    点赞 评论 复制链接分享
  • u011857821 caoghui642 3年前

    很可能是你的txt文件的编码格式的问题,试试将txt文件的编码格式改成unicode

    点赞 评论 复制链接分享
  • csdn_zyp2015 代码搬运工@@ 3年前

    谢谢各位,应该是我电脑上安装了加密软件的原因,换了一台未加密的电脑试了一下,可以正常读取文件并输出到控制台。

    点赞 评论 复制链接分享
  • shihengzhen101 AlbertS 3年前

    文件编码与控制台编码不一致,最简单方式,修改文件编码,改为ANSI或者GBK,应该就能正常打印了

    点赞 评论 复制链接分享
  • maozhen123 maozhen123 3年前

    读取时不时可以设置编码形式吗?

    点赞 评论 复制链接分享
  • csdn_zyp2015 代码搬运工@@ 3年前
    • infile {_Filebuffer={_Set_eback=0xcccccccc <读取字符串的字符时出错。> _Set_egptr=0xcccccccc <读取字符串的字符时出错。> _Pcvt=0x00000000 ...} } std::basic_ifstream >
    点赞 评论 复制链接分享
  • csdn_zyp2015 代码搬运工@@ 3年前

    getline(sfile, line);这条指令,sfile内容提示读取字符串内容出错!!!!这是什么原因啊!!!

    点赞 评论 复制链接分享
  • cx1990820 Blue_sky90 3年前

    用UltraEdit 打开txt,单步调试看你读取的内容。比对16进制数据,看看读取的是否一致

    点赞 评论 复制链接分享
  • wkqly wkqly 3年前

    应该是输入字符的编码与输出编码不一致

    点赞 评论 复制链接分享
  • weixin_38199017 weixin_38199017 3年前

    应该跟你的vc版本语言有关

    点赞 评论 复制链接分享
  • Lunatic_9 Lunatic_9 3年前

    不要用txt 换个编辑本文文件

    点赞 评论 复制链接分享
  • qq_31318991 聪明不绝顶er 3年前

    编码问题,如果是全部乱码,应该输入字符的编码与输出编码不一致;如果是中文乱码,应该是输出编码不支持中文。

    点赞 评论 复制链接分享
  • csdn_zyp2015 代码搬运工@@ 3年前

    void mian()
    {
    stream = fopen("1.txt", "r");
    if (stream == NULL)
    printf("The file 1.txt was not opened\n");
    else
    {
    /*fprintf(stream, "%s %ld %f %c", "helloworld",
    65, 3.14, 'c');*/
    /*Set pointer to beginning of file:*/
    fseek(stream, 0, SEEK_SET);
    char ch;
    while ((ch = getc(stream)) != EOF)
    putchar(ch);
    }
    }
    用fopen()函数,输出的也是这种乱码,不知道哪里出现了问题

    点赞 评论 复制链接分享
  • qq_22590821 ..天空\.. 3年前

    应该是字符集问题,因为txt文件中存储的GBK字符集,你读取的时候使用你指定的字符集进行转换,的出来的就会是正常了,希望能帮到您!

    点赞 1 评论 复制链接分享

为你推荐