2014-02-23 207 views
-3

我在編寫一個應用程序,它可以將.txt文件轉換爲用於文本挖掘的單詞包。但是,即使我的應用程序過濾非字母字符,我也會收到非字母字符(如¾和=):在C++中無法識別的字符

我的向量經過一個循環,該循環擦除以ASCII值開始的字符串, 65,90](從A到Z)。這些字符也通過isalpha測試。似乎這些字符不能與字母字符區分開來。

我看不出我如何從我的字符串向量中動態地刪除這些奇怪的字符串。我需要幫助。

我的代碼,因爲它是相當長的論壇帖子。

我的代碼這部分未能擺脫非aphabetic字符開頭的字符串:

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') 
+3

您至少需要包含相關的代碼部分;它也將有助於查看您的代碼未正確處理的文本示例。 – computerfreaker

+1

您應該展示一些真實的代碼並解釋程序的邏輯,例如用於讀取文件的編碼以及如何檢測該文件。 – user2485710

+0

我的代碼的這部分未能擺脫以非字母字符開頭的字符串: for(unsigned int i = 0; i 90 || c <65)token24.erase(token24.begin()+ i);如果(c> 90 || c <65)我 - ; } } – user196672

回答

0

你總是可以做一個字符串替換帶有空格的字符,但只處理特定字符的特定情況,而不是較大的問題。

我不認爲我們可以爲你做任何事,直到我們看到代碼。

+1

這不是真的答案;正如你指出的那樣,還沒有足夠的信息來回答它。這應該作爲評論發佈。 –

+1

@JoshuaTaylor,並不是我們所有人都有代表的水平。評論。我確實提供了至少一個部分解決方案。 –

+0

Ooo,沒有看到代表級別...好吧,掛在那裏,你很快就會達到50代表(如果你匆忙,建議編輯是一個快速到達的地方)。 –

0

像你這樣的程序中最重要的部分是處理.txt文件的內容。這樣的文件可以是一個Unicode文本,它可以被編碼,例如UTF-8。然後,單字節只能是字符的一部分,而不能是字符本身。你確定你以正確的方式加載(並可能解碼)文件嗎?

此外,你不覺得低字母也是有效的字母字符嗎?

+0

我已經提取的文本文件是我通過網站的API自動提取的4chan文章。我將所有內容都轉換爲大寫,因爲我對單詞出現頻率感興趣。我對字符代碼沒有太多的知識,但我必須學會解決這個問題。 – user196672