Итак, я хочу использовать строковый поток для преобразования строк в целые числа.Stringstream, когда итерация через строку не работает
считать, все сделано с:
using namespace std;
основной случай, который, кажется, работает, когда я делаю это:
string str = "12345";
istringstream ss(str);
int i;
ss >> i;
работает отлично.
Однако позволяет сказать, что у меня есть строка определяется как:
string test = "1234567891";
и я:
int iterate = 0;
while (iterate):
istringstream ss(test[iterate]);
int i;
ss >> i;
i++;
это не работает, как я хочу. по существу я должен был индивидуально работать над каждым элементом строки, как если бы это был номер, поэтому я хочу сначала преобразовать его в int, но я тоже не могу. Может кто-нибудь, пожалуйста, помогите мне?
ошибка я получаю:
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;
Как вы можете ожидать поток, чтобы понять, где разбить строку на отдельные элементы, когда нет разделителей? – dasblinkenlight
Если вы используете test [iterate], то у вас есть символ ASCII, содержащий цифру.Чтобы преобразовать символ ASCII, содержащий цифру в число, вы можете просто вычесть «0». 'int i = test [iteratet] - '0'' –