Donc, je veux utiliser un flux de chaîne pour convertir des chaînes en entiers.Stringstream lors de l'itération à travers la chaîne ne fonctionne pas
supposons que tout est fait avec:
using namespace std;
un cas de base qui semble fonctionner est quand je fais ceci:
string str = "12345";
istringstream ss(str);
int i;
ss >> i;
qui fonctionne très bien.
laisse cependant dire que j'ai une chaîne définie comme:
string test = "1234567891";
et moi:
int iterate = 0;
while (iterate):
istringstream ss(test[iterate]);
int i;
ss >> i;
i++;
ce travail ne marche pas comme je veux. Essentiellement, je devais travailler individuellement sur chaque élément de la chaîne comme s'il s'agissait d'un nombre, donc je veux le convertir en un int d'abord, mais je ne peux pas sembler trop. Quelqu'un pourrait-il m'aider s'il vous plaît?
l'erreur que je reçois est:
In file included from /usr/include/c++/4.8/iostream:40:0,
from validate.cc:1:
/usr/include/c++/4.8/istream:872:5: note: template<class _CharT, class _Traits, class _Tp> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&&, _Tp&)
operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x)
^
/usr/include/c++/4.8/istream:872:5: note: template argument deduction/substitution failed:
validate.cc:39:12: note: ‘std::ostream {aka std::basic_ostream<char>}’ is not derived from ‘std::basic_istream<_CharT, _Traits>’
cout >> i >> endl;
Comment prévoyez-vous le flux de reconnaître où briser la chaîne en éléments individuels lorsque il n'y a pas de délimiteurs? – dasblinkenlight
Si vous utilisez test [itérer], vous avez un caractère ASCII qui contient un chiffre.Pour convertir un caractère ASCII contenant un chiffre en un nombre, vous pouvez simplement soustraire '0'. 'int i = test [iteratet] - '0'' –