----閉じてください----
- - - 編集 - - - - -
問題がどこにあるかを見つけました。本当の問題について新しい質問を始めます…。
----------------------
やあ、
私の状況:
Linux (Ubuntu 10.04)
gcc
ただし、プラットフォームに依存しない必要があります
のような特殊文字を含むテキストファイル(UTF-8)があります¥ © ® Ỳ È Ð
。std::map
これらの特殊文字を保持するためのキーのデータ型が必要な場所があります。現在、を使用してwchar_t
います。
次に、これらの文字を含めることができる文字列を使用する必要があります。今私はを使用してstd::wstring
います。
そのUTF-8ファイルを読む必要があります。だから、私はを使用して考えましたwifstream
。そして、ライン処理には、を使用しwstringstream
ました。
これは悪くないと思います、私がこれまでにやったことです...そうでなければ、何が良いですか?
何が問題になっていますか:
もちろん、私はそのファイルを読まなければなりません。ただし、行の読み取りは、特別な文字を使用して最初の行で停止します。要するに、これは私がしたことです:
map<wchar_t, Glyph*> glyphs;
//...
wifstream in(txtFile.c_str());
if (!in.is_open())
{
throw runtime_error("Cannot open font text file!!");
}
wstring line;
while (getline(in, line)) // edit
{
printf("Loading glyph\n");
if (line.length() == 0)
{
continue;
}
wchar_t keyChar = line.at(0);
/* First, put the four floats into the wstringstream */
wstringstream ss(line.substr(2));
/* Now, read them out */
Glyph *g = new Glyph();
ss >> g->x;
ss >> g->y;
ss >> g->w;
ss >> g->h;
glyphs[keyChar] = g;
printf("Glyph `%c` (%d): %f, %f, %f, %f\n", keyChar, keyChar, g->x, g->y, g->w, g->h);
}
したがって、問題は次のとおりです。wifstreamを使用して特殊文字を含むファイルを読み取る方法は?
前もって感謝します!
ファイルの外観:
0.000000 0.000000 0.010909 0.200000
A 0.023636 0.000000 0.014545 0.200000
B 0.050909 0.000000 0.014545 0.200000
C 0.078182 0.000000 0.014545 0.200000
D 0.105455 0.000000 0.014545 0.200000
E 0.132727 0.000000 0.014545 0.200000
...。
È 0.661818 0.400000 0.014545 0.200000
É 0.689091 0.400000 0.014545 0.200000
Ê 0.716364 0.400000 0.014545 0.200000
Ë 0.743636 0.400000 0.014545 0.200000
Ì 0.770909 0.400000 0.012727 0.200000
Í 0.796364 0.400000 0.012727 0.200000
Î 0.821818 0.400000 0.012727 0.200000
Ï 0.847273 0.400000 0.012727 0.200000
Ð 0.872727 0.400000 0.014545 0.200000
Ñ 0.900000 0.400000 0.014545 0.200000