在你开始之前; 是的,我知道这是一个重复的问题,是的,我已经看了看发布的解决方案。 我的问题是我不能让他们的工作。
bool invalidChar (char c)
{
return !isprint((unsigned)c);
}
void stripUnicode(string & str)
{
str.erase(remove_if(str.begin(),str.end(), invalidChar), str.end());
}
我测试了这个方法“Prusæus,Ægyptians”,它什么也没做我也试图替代isprint
的isalnum
时,在我的程序的另一部分,我转换与字符串> wstring->字符串出现真正的问题。 如果存在在与字符串的unicode字符> wstring的转换转换不太愿意。
参考:
你怎么可以从一个字符串剥离非ASCII字符? (在C#)
如何从C ++中的字符串中去除所有非字母数字字符?
编辑:
我还是想删除所有非ASCII字符,无论但如果有帮助,这里是我崩溃:
// Convert to wstring
wchar_t* UnicodeTextBuffer = new wchar_t[ANSIWord.length()+1];
wmemset(UnicodeTextBuffer, 0, ANSIWord.length()+1);
mbstowcs(UnicodeTextBuffer, ANSIWord.c_str(), ANSIWord.length());
wWord = UnicodeTextBuffer; //CRASH
错误对话框
MSVC ++调试库
调试断言失败!
计划://的myproject
文件:F:\ DD \ vctools \ crt_bld \ self_x86 \ CRT \ SRC \ isctype.c
行://以上
表达:(无符号)(C + 1)<= 256
编辑:
进一步加剧事项:.txt文件,我从阅读中是ANSI编码。 内一切都应该是有效的。
解:
bool invalidChar (char c)
{
return !(c>=0 && c <128);
}
void stripUnicode(string & str)
{
str.erase(remove_if(str.begin(),str.end(), invalidChar), str.end());
}
如果有人想复制/粘贴此,我可以关闭检查这个问题。
编辑:
对于未来的参考:尽量使用__isascii,iswascii命令