Je veux avoir des informations à lire à partir d'une chaîne.
Y a-t-il un moyen de le faire? P>
quelque chose comme ceci: p>
const char * s = "123 ab"; cin.readFrom(s);//<---- I want something like this int i; cin>>i; cout<<i; //123
4 Réponses :
Essayez quelque chose comme:
Comme ceci:
#include <sstream> #include <iostream> std::istringstream stream("Some string 123"); streambuf* cin_backup = std::cin.rdbuf(stream.rdbuf());
Je recommanderais d'utiliser un flux de chaîne. Vous pouvez utiliser les opérateurs d'E / S surchargés tels que vous le feriez avec Standard in / Standard Out. Quelque chose comme ceci: Je trouverais personnellement que cela soit un peu plus clair que la lecture d'une chaîne à la norme dedans, puis de l'utilisation des opérateurs d'E / S de la norme dans la norme, mais peut-être qu'il y a une raison pour laquelle vous Voulez-vous la lire à la norme en premier que je ne réalisez pas. P> J'espère que cela vous aide! P> P>
en C ++ 17, La solution Ben Voigt ne compilera pas que si vous utilisez basic_stringbuf code>. Utilisez plutôt celui ci-dessous:
stringbuf s;
const char *userInput = "10 1 2 3 4 5 6 7 8 9 10 3 7";
s.sputn(userInput, strlen(userInput));
cin.rdbuf(&s);
Si vous souhaitez utiliser un tableau de caractères au lieu d'une chaîne STD: String, vous pouvez utiliser CIN.getline (S, N); Où N est le "nombre de caractères à stocker (y compris le caractère null de terminaison)". Voir Cplusplus.com/reference/iostream/istream/getline . Il y a aussi une gaine pour STD :: String, voir cplusplus.com/reference/string/getline < / a>
@anno: lire
Cin code> de b> une chaîne, pas de
CIN code> dans une chaîne.