2011-09-20 4 views
0

Comment diviser une chaîne entrée comme "un deux trois quatre cinq" dans un tableau. currentyly je ceci:Coupe de la chaîne de caractères C++

const int SIZE = 5; 
string digit[SIZE]; 

cout << "Enter the five here:"; 
for(int i = 0; i < SIZE; i++) 
{ 
    cout << i+1 << ")"; 
    getline(cin, digit[i]); 
} 

mais tel qu'il est, l'utilisateur doit entrer frapper chaque fois. Comment puis-je obtenir ainsi quand j'appelle digit[1] pour l'exemple d'entrée ci-dessus, je reçois two. J'espère que cela a du sens, j'imagine qu'il y a une certaine fonction à faire pour vous, mais s'il y a vraiment une façon élémentaire de le faire, cela me profitera probablement le mieux, je suis encore en train d'apprendre. thx

Répondre

4

Si vous voulez lire des mots séparés par des espaces, vous pouvez profiter du fait que l'extraction d'une chaîne à partir d'un flux d'entrée s'arrêtera à des espaces:

for(int i = 0; i < SIZE; i++) 
{ 
    cout << i+1 << ")"; 
    cin >> digit[i]; 
} 
+0

parfait - Je ne sais pas pourquoi cela ne m'est pas venu à l'esprit. Merci! – hart929

0
bien

si vous voulez prendre toutes les «cinq» dans une seule ligne, vous pouvez le faire aussi. puis vous pouvez utiliser strtok() pour diviser la chaîne en cinq chaînes. voir: http://www.cplusplus.com/reference/clibrary/cstring/strtok/

+0

'strtok' est méchant cependant. L'utilisation de l'état global peut vous mordre. –

+0

'strtok_r' et' strsep' sont beaucoup mieux que commun 'strtok' –

0

Vous pouvez également utiliser la fonction getline avec 3 arguments. 3ème est délimiteur.

getline(cin, digit[i], ' '); 

Bien sûr, ce n'est pas la meilleure façon de lire l'entrée de cin. Mais vous pouvez utiliser une telle approche pour scinder la chaîne complète, que vous obtenez de l'utilisateur.

+0

qui a toujours lieu dans la boucle for correct? Je l'ai essayé et le processus stagne; il ne passe pas à la tâche suivante. – hart929

Questions connexes