当前位置:  技术问答>linux和unix

C++读文件,中文无法显示和比较(内有详细代码)

    来源: 互联网  发布时间:2016-07-19

    本文导语:  在读一个UTF8编码的文件时, 对每一行,都转换为单字符串。 但文件中的中文显示不出来,也无法实现查找。 代码: ifstream ifs("file"); string strTarget = "目标"; printf("%sn", strTarget); //成功显示中文。 string strLine; whi...

在读一个UTF8编码的文件时,
对每一行,都转换为单字符串。
但文件中的中文显示不出来,也无法实现查找。

代码:

ifstream ifs("file");

string strTarget = "目标";
printf("%sn", strTarget); //成功显示中文。
string strLine;
while(getline(ifs, strLine, 'n'))
{
wstr = UTF2Uni(strLine.c_str(), wstr); //从UTF8转为宽字符
strLine = ws2s(wstr); //从宽字符转为单字符

         printf("%sn", strLine.c_str()); //(1)中文显示不出来!!
         if(strLine.find(strTarget) != string::npos) //(2)文件中含有“目标”,但找不到!!
         {
            ...
         }
}


用到的两个字符转换函数如下,参考大侠们的代码:

wstring UTF2Uni(const char* src, std::wstring &t)
{
    if (src == NULL) 
    {
        return L"";
    }
    
    int size_s = strlen(src);
    int size_d = size_s + 10;          //?
    
    wchar_t *des = new wchar_t[size_d];
    memset(des, 0, size_d * sizeof(wchar_t));
    
    int s = 0, d = 0;
    bool toomuchbyte = true; //set true to skip error prefix.
    
    while (s 

    
 
 

您可能感兴趣的文章:

  • C++ I/O 成员 eof():如果处于文件结尾处则返回true
  • linux的帮助文件在什么地方啊,我想看看关于c++的帮助文件。另外从哪里能搞到c++的类库说明阿
  • c++断言assert()函数的头文件及其用法详解
  • C++配置文件解析 C++ Configurator
  • c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件
  • 求教在linux下把 ui 文件转化成c++文件
  • linux 下的自解压文件是什么格式,如何判断文件是否为自解压c++或者脚本判断均可 iis7站长之家
  • 请教关于用c编译出来的.a文件和用c++编译出来的.a文件的互用问题
  • 请问在C文件中如何引用 C++ 生成库?
  • linux 用c++用什么头文件?
  • [c/c++互相包含困惑]c文件包含c++头文件
  • linux 下的自解压文件是什么格式,如何判断文件是否为自解压c++或者脚本判断均可
  • 文件解压的C++库 File_Extractor
  • redhat linux平台下文件正在使用判别C++?
  • Linux下使用C++互斥访问文件+消息队列
  • 如何编译带头文件的C++程序阿??(第一次用g++)
  • Linux下的c++,如何获取一个文件的行数呢?
  • linux下编译c++程序,系统头文件中包含的函数的定义源代码可以查看吗?
  • C++文件传输问题
  • C++多文件变量解析
  • 请问如和在 linux 内核心编译c++ 文件 能写个简单的添加例子或则makefile 谢谢!
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • 我安装了Redhat 7.3中文版,可以输入和显示中文文件,但是在光盘上的中文文件名却不能正确显示,为什么?你们的是这样的吗?
  • 在windows下压缩成的.zip文件,在linux下解压后,不认识里边的中文目录和中文文件名,怎么办?(必须用.zip文件)
  • 用java读中文linux中的文件是正确的,用java读英文linux版本中的文件是乱码,如何使英文linux读出的文件数据也是中文的?
  • rh9中xmms的音乐文件列表用中文字体后,为什么数字序号和文件的时间长度都会强制变成中文的
  • ★★为什么我把Windows的FAT32中文目录或文件mount到Linux显示???号?,但在Linux下可以正常显示新建中文目录或文件(ext3)呀!!!
  • 在DOS下怎样看见中文名的文件夹和中文文件?怎样进去呀?
  • 请问:Linux不能显示U盘中中文文件名,但能显示中文的内容?怎么解决?
  • zip包在中文centos上解压后, 其中如果有中文文件名则为乱码, 怎么解决??
  • Redhat9.0挂载windows分区(ntfs)不能显示中文目录和中文名称的文件?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • fedora14无法打开桌面,所有文件夹都无法打开。
  • 使用TCP传输文件,文件传输成功了,大小也一样,但无法打开
  • 在Linux中复制文件如何自动跳过那些损坏的无法被复制的文件。
  • GDM无法写入您的认证文件。这可能意味着您的硬盘没有空间,或者您的主目录无法以写方式打开
  • jsp做下载文件,(如rar文件)为什么下载后,无法打开?
  • 在程序建立的文件夹里,程序自己无法创建文件?
  • ftp连接下无法删除程序生成的文件(cache文件)
  • 达人狂入:linux中木马,文件无法删除
  • hp-ux 文件夹无法删除
  • 虚拟机 Linux文件无法修改
  • 一些文件未注册导致mssql表文件无法找开的解决方法
  • .bin文件:无法执行二进制文件
  • ubuntu下无法执行.bin二进制文件
  • 为什么无法删除文件夹和其中的文件,请指教!
  • 挂载ntfs格式的硬盘后,无法读取很多文件????
  • VMware中linux无法正常加载iso文件
  • 虚拟机无法下载宿主机文件
  • 高手指点,FTP问题,无法显示文件信息
  • 我的applet需要读入一些文字数据,但无法打开文件,咋办!
  • Parser无法接受中文文件名?
  • WinDows8最新版文件夹加密
  • Shell脚本如何递归现实一个文件夹中的文件(文件夹中含有文件夹)
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 求命令:什么命令可以把文件夹下所有的文件按修改时间先后排出来,包括子文件夹里的文件。
  • python异常信息堆栈输出到日志文件
  • [提问]Linux下如何把多个.a文件编译一个.so文件,或者把多个.so文件编译成一个.so文件
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 请问:proc中的头文件中能包含头文件吗?(感觉如果头文件中包含头文件的话,在链接时就会有错误啊)
  • 在MyEclipse中设开启xml文件自动提示和自动完成功能
  • 我要实现当进程打开文件时,根据文件名判断是否符合要求,符合后处理文件,再把文件返回给进程,怎么实现啊
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3