[C++] Program nie zlicza liczb ze stringa
Ostatnio zmodyfikowano 2012-09-10 16:35
SeaMonster131 Temat założony przez niniejszego użytkownika |
[C++] Program nie zlicza liczb ze stringa » 2012-09-10 16:20:33 Mam taki oto kod: std::string b = "", s = "13 1 1";
for( int i = 0; i < s.length(); i++ ) { if( s[ i ] == ' ' || i == s.length() - 1 ) { suma += atoi( b.c_str() ); b = ""; } else b += s[ i ]; }
I już tłumaczę o co chodzi. Po prostu w pętli odczytuję liczby z danego stringa i zamieniam je na int, dodając je do zmiennej suma. Problem jest w tym, że obojętnie ile dam liczb, program za chiny nie doda mi ostatniej liczby. Całkowicie nie mam pojęcia dlaczego tak się dzieje, chyba jestem ślepy :C |
|
xevuel |
» 2012-09-10 16:30:19 #include <iostream> #include <string> #include <cstdlib>
using namespace std;
int main() { int suma = 0; std::string b = "", s = "13 1 1"; for( int i = 0; i < s.length(); i++ ) { if( s[ i ] == ' ' ) { suma += atoi( b.c_str() ); b = ""; } else if( i == s.length() - 1 ) { b += s[ i ]; suma += atoi( b.c_str() ); } else b += s[ i ]; } cout << suma; return 0; }
działa poprawnie, zapomniałeś o przypisaniu do stringa b wartości w ostatniej iteracji ;) |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2012-09-10 16:32:05 Faktycznie o tym to zapomniałem, eh od wczoraj sie nad tym głowiłem.. :) Dzięki. // Więc w sumie wystarczy dać: for( int i = 0; i < s.length(); i++ ) { b += s[ i ]; if( s[ i ] == ' ' || i == s.length() - 1 ) { suma += atoi( b.c_str() ); b = ""; } }
I też działa. Najwyraźniej spację atoi() zamienia na takie.. NULL. |
|
akwes |
» 2012-09-10 16:35:19 |
|
« 1 » |