[c++]Problem z konwersją str na int


(Pbuderaski) #1

Witem, mam problem z konwersją danych z string do int w tablicy.

Oto kod:

int main(){

	string oct_str = "11";

	int wynik = 0;

	int* oct_int = new int[oct_str.size()-1];

	for(int i=0; i <= oct_str.size()-1; i++){

 		istringstream iss(oct_str[i]);

		iss>>oct_int[i];

		wynik += oct_int[i]*potega(8,i);

	}

	cout<
	return 0;

}

Debugowałem i zauważyłem, że w tym miejscu:

iss>>oct_int[i];

Nic nie jest wpisywane do tablicy.

Czy ktoś może wie w czym rzecz?

Pozdrawiam.


(Sawyer47) #2

Zamiast się bawić.

atoi: http://www.cplusplus.com/reference/clib ... dlib/atoi/

atol: http://www.cplusplus.com/reference/clib ... dlib/atol/

strtol: http://www.cplusplus.com/reference/clib ... ib/strtol/

Albo zobacz jak to rozwiązali tu http://www.boost.org/doc/libs/1_46_1/li ... l_cast.htm


(Pbuderaski) #3

No własnie robiłem tak:

oct_int = atoi(oct_str[i].c_str());

Tylko niestety wyskakiwał błąd, że nie mogę wstawić przed kropką .


(Xwars) #4

Skoro to tylko jedna cyfra...

oct_int = oct_str[i] -'0'

nie możesz wywołać c_str() na oct_str_, bo o ile oct_str to string to oct_str_ to już char;


(Marianmularz85) #5

Najłatwiej zapisać do pliku i odczytać jako int.


(Ryan) #6

Świetny pomysł. W ogóle najlepiej zatrudnić kogoś, kto będzie czytał stringa z ekranu i wpisywał cyfrę z klawiatury.

@ucho3000: Autor chyba próbował odczytać znak po znaku ciąg by w efekcie uzyskać liczbę. To czego szuka to prawdopodobnie atoi(oct_str.c_str());


([alex]) #7

stringstream nadaje się do wczytywania danych ze stringu, np tak:

int main()