我尝试使用普通的正则表达式,一切都很好,当我切换到用于在 Unicode 字符中搜索和标记化的 wregex 时,它失败了,我不明白为什么。
有人可以指出我在这里缺少什么吗?
map<string, int> container;
wifstream file("ftest.txt");
wregex reg(_T("\\w+"));
wstring s=_T("");
while (file.good())
{
file>>s;
for ( wsregex_iterator it (s.cbegin(), s.cend(), reg),it_end; it != it_end; ++it)
{
container[(*it)[0]]++ ;
}
}
我的文件的内容是波斯语,例如:
بسم الله الرحمن الرحیم
تست یک تست 2 . 2357 نفر آمار تست اولیه هرچی!!
这些是它产生的错误:
错误 C2679:二进制“[”:未找到采用“const std::sub_match<_BidIt>”类型的右侧操作数的运算符(或没有可接受的转换)
IntelliSense:没有运算符“[]”与这些操作数匹配,操作数类型为:std::map、std::allocator>> [ const std::sub_match>>> ]