我在让程序从基于模板的文件中读取时遇到问题,例如:
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>
)中的所有信息,并且正如预测的那样,如果iter->first
不是char
数组,则 cout 会爆炸。
我在网上查看过,共识是使用 wcout,但不幸的是,由于该程序要求可以在编译时更改模板(<char>
-> <wchar_t>
)我不确定如何简单地选择 cout 或 wcout。也就是说,除非有办法在不更改大量代码的情况下读取/写入宽字符。
如果这个解释听起来很复杂,请告诉我,我会尽我所能解决它。