0
.Please need your support. String to int without stoi function
https://code.sololearn.com/cCbw5kO5VppU/?ref=app I am trying to convert string to int without stoi. All looks good at least the last part of code. Can anyone try to help. Thank you.
8 Answers
+ 3
Also, you should use the standard library as much as possible. I understand you're doing this as practise, but even when you're practising, focus on practising one thing and use the standard library for the rest. This way, you'll learn to use the std library while getting your practise.
For example, in this code, I've implemented my own strToInt() function just like yours, but I've used the STL for doing everything else, which results in a much cleaner code.
https://code.sololearn.com/cCF6BGgRCKcg/?ref=app
+ 2
On line 67, you've not specified a size for the array `num`, so it creates an array of size 1 (sinze you have specified 1 number in the initializer list). So when you try to access an index greater than 0 of `num`, it results in a segementation fault.
Also, the syntax
string arr[count + 1];
Is non-standard and hence invalid on a lot of compilers. The expression inside the [] brackets MUST be constant. For example,
```
int arr[10]; // OK
const int size = 10;
int arr2[size]; //OK
int size2 = 10;
int arr3[size2]; // NOT OK
```
You should consider using std::vector instead.
https://www.cplusplus.com/reference/vector/vector/
0
Thank you for your advise. I haven't remembered to inicialise num array to 0. Now I get correct result.
I don't use STL because the compiler where I am solving the code doesn't allow to use stoi function so I get to find another way..
0
TeaserCode
Just out of curiosity, which compiler are you using which doesn't allow STL? Is it some coding practise website?
0
// A good substitute for stoi is sscanf.
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc, char *argv[]) {
std::string a="12348 5372 89123";
std::cout << "string: \"" << a << "\"\n";
std::cout << "num: ";
std::size_t spc = 0;
const char *s = a.c_str();
do {
int n;
// convert string to integer
if (sscanf(&s[spc], " %d", &n))
std::cout << n << ' ';
spc = a.find(' ', spc + 1);
} while (spc!=std::string::npos);
std::cout << std::endl;
return 0;
}
0
I has been doing one coding program on Codewars, named Weight for Weight. When I use stoi function it reports "exception what stoi".
One more question there are some problems where you use functions like ceil or floor. But I use one of them as it said. The result is wrong because it fails one for one value like "correct is 344" but I get 343 or 342, which is wrong. So output must be strictly 344.
0
TeaserCode when you tried to call stoi did you mistakenly pass a size_t value to the second argument? It should be a pointer to a size_t value.
It is impossible to tell what went wrong with the ceil or floor calculation without seeing the code. Floating point can be very sensitive to the order of calculations and precision used.
0
Ok, I am going to check it out.