Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Program nie zlicza liczb ze stringa

Ostatnio zmodyfikowano 2012-09-10 16:35
Autor Wiadomość
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:
C/C++
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
P-64759
xevuel
» 2012-09-10 16:30:19
C/C++
#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 ;)
P-64760
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ć:
C/C++
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.
P-64761
akwes
» 2012-09-10 16:35:19
http://ideone.com/UF2tV ;> Dlaczego zaaaaawsze liczy o jeden znak za mało ;> ?

A co faktycznie zwraca length() ?

http://ideone.com/AWDFQ


Chyba jednak głupota xD
P-64762
« 1 »
  Strona 1 z 1