2013-02-19 98 views
0

我有任何字符的輸入,我需要有一個數組分隔輸入中的單詞。該數組需要只有字母(西班牙文,所以它包括重音字母)。我的代碼做到了,它只是無法識別特殊的西班牙文字符,如「¡」,「¿」等。比較字符與西班牙字符

我該如何設法糾正這個問題?...這是我的代碼。

string x[100]; 
int n = 0; 
while (entrada){ 
    entrada>>x[n]; 
    n++; 
} 
n--; 
for(int j = 0;j<n;j++){ 
    cout<<x[j]<<"/"; 
} 
string y[100]; 
for(int i = 0;i<n;i++) 
    for(int j = 0; j<x[i].length();j++){ 
     if(!ispunct(x[i][j])) 
      y[i]+=x[i][j]; 
    } 

與此代碼我得到這個輸入和輸出:

input 
======= 
Hola, 
Cómo estás? 
Espero que muy bien. ¡!!! 
El otro día que fui al cine me acordé de la 
película que vimos el año pasado. 

output 
======== 
Hola/Cómo/estás/Espero/que/muy/bien/¡/El/otro/día/que/fui/al/cine/me/acordé/de/la/película/que/vimos/el/año/pasado/ 

輸出是剛剛打印分離的陣列由一個「/」

+0

Intenta crear un arreglo de caracteres con los signosválidos,incluidas letras acentuadas,minúsculasymayúsculas,asíhaces un ciclo doble,el cual compare que exista el caracter en el arreglo,de no serasí,puedes validar que no es correcto 。 – 2013-02-19 00:34:54

+0

嘗試創建一個有效字符數組,並使用double,可以將每個元素與有效數組進行比較,並驗證它的正確與否。 – 2013-02-19 00:36:02

回答

0

嘗試設置的語言環境,是這樣的:

#include <clocale> 
    ... 
    std::setlocale(LC_ALL, "es_ES"); 

它應該使ispunct()承認西班牙標點符號。

+0

我試過這個,但它沒有工作..得到完全相同的結果 – pbelt 2013-02-19 01:25:06

+0

它返回NULL?你究竟如何編碼你的西班牙文本? UTF-8? 8859出頭?還有別的嗎?你的編譯器和操作系統是什麼? – 2013-02-19 01:55:10

+0

我只是說你的代碼,所以我有: 的#include 的#include 的#include 的#include 的#include 「AD.h」 使用命名空間std; int main(){ setlocale(LC_ALL,「es_ES」); ifstream entrada; entrada.open(「entrada.txt」); string x [100]; int n = 0; (entrada){ entrada >> x [n]; n ++; } n--; string y [100];對於(int j = 0; j pbelt 2013-02-19 04:51:59