wchar_t *를 파일에 쓰려고 합니다만 컴파일 된 프로그램의 명령 행 출력은 다음과 같습니다. 본질적으로 그리스어 문자열을 쓰려고 할 때 프로그램이 멈 춥니 다. wofstream에 쓰면 예외가 발생합니다.
#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;
}
}
왜
아래el_GR.UTF-8
terminate called after throwing an instance of 'int'
Ακυρώθηκε (core dumped)
소스 코드?
그것은 버그입니다. 컴파일러와 전체 시스템은 무엇입니까? 경고가 있습니까? 소스 코드의 인코딩은 무엇입니까? 그리고 마지막으로'e'의 가치는 무엇입니까? –
e의 값은 20입니다. g ++을 사용하고 경고없이 컴파일합니다. 그것은 일종의 초기화가 수행되어야하는 것처럼 보입니다. –