gpt4 book ai didi

c++ - 写入 wofstream 会产生异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:17:24 26 4
gpt4 key购买 nike

我尝试将一些 wchar_t* 写入文件,但编译程序的命令行输出如下所示。本质上,程序在尝试写入希腊字符串时挂起。

el_GR.UTF-8
terminate called after throwing an instance of 'int'
Ακυρώθηκε (core dumped)

下面是源代码

#include <iostream>
#include <stdio.h>
#include <fstream>
#include <wchar.h>
using namespace std;

int main(int argc, char **argv)
{

printf("%s\n",setlocale(LC_ALL,""));
wofstream f("xxx.txt", ios::out);
if(f.is_open())
{
try
{
f.write(L"good",4);
f.flush();
f.write(L"καλημερα",8);
f.close();
}
catch (int e)
{
cout << "An exception occurred. Exception Nr. " << e <<endl;
}

printf("hello world\n");
return 0;
}
}

为什么?

最佳答案

流不从环境中获取语言环境。我补充说:

#include <locale>
locale loc("el_GR.utf8");
f.imbue(loc);

因此流现在包含要使用的语言环境(如果我错了请更正)。

正确运行的代码是:

#include <iostream>
#include <stdio.h>
#include <fstream>
#include <wchar.h>
#include <locale>


using namespace std;

int main(int argc, char **argv)
{
locale loc("el_GR.utf8");
wcout<<"Hi I am starting Ξεκινάμε"<<endl;
cout<<"%s\n"<<setlocale(LC_ALL,"en_US.utf8")<<endl;
wofstream f("xxx.txt", ios::out);
if(f.is_open()){
f.imbue(loc);

f.write(L"good",4);f.flush();
f.write(L"καλημέρα",8);
f.close();
cout<<"fileClosed"<<endl;
}

cout<<"hello world"<<endl;
return 0;


}

关于c++ - 写入 wofstream 会产生异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24941299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com