打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
QString和string互转中文字符

string -> QString

1 std::string strStd = "中文字符";
2 QString strQ = QString::fromLocal8Bit(strStd.c_str());

QString -> string

1 QString strQ("中文字符");
2 std::string strStd= strQ.toStdString();
3 QTextCodec *code = QTextCodec::codecForName("gb18030");
4  // 如果code为0,表示在运行的机器上没有装gb18030字符集。不过一般的中文windows系统中都安装了这一字符集
5  if (code) strStd= code->fromUnicode(strQ).data();

或者用如下方式:
 
QString s2q(const string &s)   
{   
        return QString(QString::fromLocal8Bit(s.c_str()));   
}   
string q2s(const QString &s)   
{   
        return string((const char *)s.toLocal8Bit());   
}  

 

 

C/C 中读取中文路径文件的方法

有时候用ifstream或ofstream打开带有中文路径的文件会失败。

解决办法:
1、使用C语言的函数设置为中文运行环境
setlocale(LC_ALL,"Chinese-simplified");

2、使用STL函数设置为系统语言环境
std::locale::global(std::locale(""));

当然选2啦!

 

 

 

1.最近编程采用C 文件操作来读入一个文件,代码:

                ifstream inf;

                inf.open(strpath);     //通过文件路径打开文件

                当文件路径strpath中带有中文时程序运行错误,导致卡死,后来终于弄清用C 方法打开带中文路径的文件时会有BUG,谁叫这东东是老外写的呢,但是通过下面的方法可以解决,如代码:

               ifstream inf;                              //C 方式打开文件
               locale::global(locale(""));         //将全局区域设为操作系统默认区域
               inf.open(strpath);                    //通过文件路径打开文件
               locale::global(locale("C"));     //还原全局区域设定string -> QString

1 std::string strStd = "中文字符";
2 QString strQ = QString::fromLocal8Bit(strStd.c_str());

QString -> string

1 QString strQ("中文字符");
2 std::string strStd= strQ.toStdString();
3 QTextCodec *code = QTextCodec::codecForName("gb18030");
4  // 如果code为0,表示在运行的机器上没有装gb18030字符集。不过一般的中文windows系统中都安装了这一字符集
5  if (code) strStd= code->fromUnicode(strQ).data();

或者用如下方式:
 
QString s2q(const string &s)   
{   
        return QString(QString::fromLocal8Bit(s.c_str()));   
}   
string q2s(const QString &s)   
{   
        return string((const char *)s.toLocal8Bit());   
}  

 

 

C/C 中读取中文路径文件的方法

有时候用ifstream或ofstream打开带有中文路径的文件会失败。

解决办法:
1、使用C语言的函数设置为中文运行环境
setlocale(LC_ALL,"Chinese-simplified");

2、使用STL函数设置为系统语言环境
std::locale::global(std::locale(""));

当然选2啦!

 

 

 

1.最近编程采用C 文件操作来读入一个文件,代码:

                ifstream inf;

                inf.open(strpath);     //通过文件路径打开文件

                当文件路径strpath中带有中文时程序运行错误,导致卡死,后来终于弄清用C 方法打开带中文路径的文件时会有BUG,谁叫这东东是老外写的呢,但是通过下面的方法可以解决,如代码:

               ifstream inf;                              //C 方式打开文件
               locale::global(locale(""));         //将全局区域设为操作系统默认区域
               inf.open(strpath);                    //通过文件路径打开文件
               locale::global(locale("C"));     //还原全局区域设定

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C++入门到理解之文件操作(文本文件的读写+二进制文件的读写)
c++中ifstream一次读取整个文件
微软“匈牙利”法程序标示符命名规则
C++读写二进制文件
C++之文件IO操作流
如何用c++的流操作复制文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服