przepisanie ze stringa na int

0
#include<iostream>
#include<cstdlib>
using namespace std;
 
int main()
{
    unsigned int j = 0, i;
 
    string wektor = "{1,2,3,4,5}";
    string tymczas = "";
    int tablica[5];
    string wektor_2;
    for (i = 0;i < wektor.length();++i)
    {
        if (wektor[i] != ',' && wektor[i] != '{' && wektor[i] != '}')
            tymczas = tymczas + wektor[i];
        if (wektor[i] == ',')
        {
            tablica[j] = atoi(tymczas.c_str());
            tymczas.clear();
 
        }
        if (wektor[i] == ',')
            tablica[j] = tymczas;
            ++j;
    }
 
 
    for (i = 0;i < 5;++i)
        cout << tablica[i];
 
} 

Dlaczego są jakieś dziwne liczby w tablicy i program działa niepoprawnie?
Dostaje takie wyniki :4-858993460-858993460-858993460-858993460

//wrzucam ponownie bo poprzedni temat przez brak tagu wylądował w koszu

1

Cały czas przypisujesz do pierwszego elementu tablicy (j). Po ostatniej liczbie nie ma przecinka, więc nie zostaje odczytana.

0
kq napisał(a):

Cały czas przypisujesz do pierwszego elementu tablicy (j). Po ostatniej liczbie nie ma przecinka, więc nie zostaje odczytana.

Ok poprawiłem i już jest ok

#include<iostream>
#include<cstdlib>
using namespace std;

int main()
{
	unsigned int j = 0, i;

	string wektor = "{1,2,3,4,5}";
	string tymczas = "";
	int tablica[5];
	string wektor_2;
	for (i = 0; i < wektor.length(); ++i)
	{
		if (wektor[i] != ',' && wektor[i] != '{' && wektor[i] != '}')
			tymczas = tymczas + wektor[i];
		if (wektor[i] == ',' || i==(wektor.length()-1))
		{
			tablica[j] = atoi(tymczas.c_str());
			tymczas.clear();
			++j;

		}
	
	}


	for (i = 0; i < 5; ++i)
		cout << tablica[i];

}
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1