ラテン文字以外の文字を含むテキストファイルを作成する作業を開始する前に、ロケールに使用するエンコードを決定する必要があります。
たとえば、ロケールがUTF-8
エンコーディングを使用する場合、ロケールがKOI8-R
の場合とはまったく異なるエンコーディングが文字列 "русский"に施されます。
UTF-8
の文字列 "русский"は、八重奏(バイト)で表されます。d1 80 d1 83 d1 81 d1 81 d0 ba d0 b8 d0 b9
。 KOI8-R
ロケールの場合、同等のオクテットはd2 d5 d3 d3 cb c9 ca
です。
国際化は困難です。
ほとんどのケースでは、C++ライブラリのワイド文字を使用することができるかもしれませんがユニコードでストリーム:
#include <iostream>
#include <locale>
int main()
{
std::locale::global(std::locale(""));
std::wcout << L"\u0440\u0443\u0441\u0441\u043a\u0438\u0439" << std::endl;
return 0;
}
うまくいけば、これからの出力は「русский」になり、ご使用のプラットフォーム上で。これが機能すれば、これは最も抵抗の少ない経路かもしれませんが、各文字のユニコード値を調べなければなりません。
新しいC++標準ではUTF-8
がサポートされていますが、ここでの答えは、ロケール、ユニコード、国際化の一般的な概念について勉強してください。これらのこと全てがどのように機能するかを完全に理解していなければ、これを行うのは難しいでしょう。
どのようにファイルを書きましたか? 'wchar_t *'や 'std :: wstring'を使っているなら、' std :: wofstream'を使うべきです。 – NathanOliver
私は試みましたが、組み合わせの助けにはなりませんでした。だからあなたはwstringとしてそれを維持し、wofstreamを使用することをお勧めしますか?はいの場合、ファイルには何も書き込まれません – mbaros
ソースファイルはどのようにエンコードされていますか? utf8、Latin-1、...? – Jarod42