C ++中无法识别的字符

时间:2014-02-23 00:41:57

标签: c++ string parsing char ascii

我正在编写一个应用程序,它将.txt文件转换为用于文本挖掘的文字袋。但是,即使我的应用程序过滤非字母字符,我仍然会收到非字母字符(如¾和=):

我的向量通过一个循环,该循环擦除以一个除[65,90]之外的ASCII值(从A到Z)的char开头的字符串。这些字符也通过了 isalpha 测试。似乎这些字符无法与字母字符区分开来。

我看不出如何从我的字符串向量中动态删除这些奇怪的字符串。我需要帮助。

我的代码,因为论坛帖子很长。

这部分代码无法摆脱以非字母字符开头的字符串:

for (unsigned int i=0; i<token24.size();i++){ 
string temp = token24[i]; 
char c = temp[0];
 if(c>90||c<65){ 
token24.erase(token24.begin()+i);
 i--;
 } 
}

我也试过了条件

 (c>'Z'||c<'A')

2 个答案:

答案 0 :(得分:0)

你总是可以用空格替换字符串,但这只是处理特定字符的特定情况,而不是更大的问题。

在我们看到代码之前,我认为我们无法为您做任何事情。

答案 1 :(得分:0)

像你这样的程序中最重要的部分是处理.txt文件的内容。这样的文件可以是Unicode文本,例如,可以使用UTF-8对其进行编码。然后,单字节只能是字符的一部分,而不是字符本身。您确定以正确的方式加载(并可能解码)文件吗?

另外,你不认为低位字母也是有效的字母字符吗?