I kept getting an error with this loop. If there are something i missed, please help. Thank You!
int main(){
string hasil;
int cod[5];
hasil = "99999";
for(int i = 0; i < 5; i ){
cod[i] = stoi(hasil[i]);
}
for(int i = 0; i < 5; i ){
cout << cod[i] 1;
}
CodePudding user response:
stoi
is for converting entire strings to integers, but you're only giving it single characters.
You could either build strings from each character like so:
cod[i] = std::stoi(std::string(1, hasil[i])); // the 1 means "repeat char one time"
Or calculate the actual integer yourself using a bit of ascii math (assuming everything is a valid digit):
cod[i] = hasil[i] - '0'; // now '0' - '0' returns 0, '5' - '0' returns 5, etc...
CodePudding user response:
std::stoi()
takes a std::string
, not a char
. But std::string
does not have a constructor that takes only a single char
, which is why your code fails to compile.
Try one of these alternatives instead:
cod[i] = stoi(string(1, hasil[i]));
cod[i] = stoi(string(&hasil[i], 1));
string s;
s = hasil[i];
cod[i] = stoi(s);
char arr[2] = {hasil[i], '\0'};
cod[i] = stoi(arr);
CodePudding user response:
The below complete working program shows how you can achieve what you want:
#include <iostream>
int main(){
std::string hasil;
int cod[5];
hasil = "99999";
for(int i = 0; i < 5; i)
{
cod[i] = hasil[i] - '0';
}
for(int i = 0; i < 5; i ){
std::cout << cod[i];
}
return 0;
}
The output of the above program can be seen here.
CodePudding user response:
std::stoi
only accpet std::string
or std::wstring
as an argument type. But hasil[i]
is a char
In C , '0'
to '9'
is guarantee to be ascending in ACSII values, so, you can do this:
cod[i] = hasil[i] - '0';