テンプレートに基づいてファイルからプログラムを読み取るのに問題があります。次に例を示します。
bool parse(basic_ifstream<T> &file)
{
T ch;
locale loc = file.getloc();
basic_string<T> buf;
file.unsetf(ios_base::skipws);
if (file.is_open())
{
while (file >> ch)
{
if(isalnum(ch, loc))
{
buf += ch;
}
else if(!buf.empty())
{
addWord(buf);
buf.clear();
}
}
if(!buf.empty())
{
addWord(buf);
}
return true;
}
return false;
}
これは、このクラスをでインスタンス化すると機能しますが、 (明らかに)<char>
使用すると問題が発生します。<wchar_t>
クラスの外では、私は以下を使用しています:
for (iter = mp.begin(); iter != mp.end(); ++iter )
{
cout << iter->first << setw(textwidth - iter->first.length() + 1);
cout << " " << iter->second << endl;
}
このデータ構造体(これはa)からすべての情報を書き込むために、予測どおり、配列でないmap<basic_string<T>, int>
場合はcoutが爆発します。iter->first
char
私はオンラインで調べましたが、コンセンサスはwcoutを使用することですが、残念ながら、このプログラムではコンパイル時にテンプレートを変更できる必要があるため(<char>
-> <wchar_t>
)、coutまたはwcoutを選択するだけでどうすればよいかわかりません。つまり、多くのコードを変更せずにワイド文字を読み書きする方法がない限りです。
この説明がぎこちなく複雑に聞こえる場合は、お知らせください。できる限り対応させていただきます。