ofstream创建文档失败

ofstream f(dir_txt.toStdString());
if(f.is_open())
{
    for(int i=0;i<640;i++)
    {
        for(int j=0;j<480;j++)
        {
            f<<Erg_2DArray[i][j];
            f<<";";
        }
            f<<"\n";
    }
    f.close();

代码如上,在学校电脑上运行的很好,在自己的电脑上运行的不行。。
其中的dir_txt一开始是QString,为qt中的类,通过toStdString()转换成了标准的String。。。
dir_txt用的相对路径
难道是因为学校的电脑文件夹都是英文,到了我自己的电脑上,文件夹包含了中文,就用不了了?

求指点。。。

阅读 5.8k
1 个回答

QString内部是Unicode的,用toStdString会调用QTextCodec::codecForCStrings来处理(QT4),所以需要设置C风格字符串的默认locale,用setCodecForCStrings

Qt5的话,删掉了codecForCStrings,默认以Latin-1处理,所有的中文字符都会丢失。

所以最简单的解决办法,不要用ofstream,用QFile

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题