string to int

Started by
14 comments, last by Craazer 20 years, 11 months ago
quote:Original post by davepermen
just.. do it yourself..

read the first char. is it a number, get the number out of it. read next char, if its a number, multiply current value by 10, add new number to it, etc..


    bool isDigit(char chr) { return chr >= ''0'' && chr <= ''9''; }char* chr = beginning_of_string;while(*chr) { if(isDigit(chr)) break; ++chr; }int number = 0;do {  number *= 10;  number += *chr - ''0'';  chr++;}while(*chr && isDigit(chr));    


something like this. i''m very very very tierd..:D

"take a look around" - limp bizkit
www.google.com

Thanks, actualy I just ended trying to do shometing similar becose the dot was kinda difficult to handle becose my solution took lot of speed. Well will be trying again later becose im very very tired too

Advertisement
quote:Original post by Craazer
Probably would''t and the bad thing when searhing whit google is that strings and ints are in many langueges like java (what was the first search result).
That''s why you add ''C'' or ''C++'' to the search string.

the inverse of sprintf is sscanf
itoa()
atoi()

other handy things ltoa(), atol(), etc

funny thing tho.. ftoa is missing, there is a atof tho.

itoa/ltoa do take a few extra things... a buffer to put string in... then the number, then a radix, usualy 10 (10 base number system is what we humans like to count in anyway
quote:Original post by Illumini
itoa()
atoi()

Those functions are not recommended. atoi() yields undefined behaviour when the input cannot be converted, and itoa() isn''t a C function.
just looking at ''Thinking in C++'' and found this code example:


  //: C03:stringConv.h// Chuck Allison''s string converter#ifndef STRINGCONV_H#define STRINGCONV_H#include <string>#include <sstream>template<typename T>T fromString(const std::string& s) {    std::istringstream is(s);    T t;    is >> t;    return t;}template<typename T>    std::string toString(const T& t) {    std::ostringstream s;    s << t;    return s.str();}#endif // STRINGCONV_H ///:~  


quote:
Here’s a test program, that includes the use of the Standard Library complex number type:


  //: C03:stringConvTest.cpp#include "stringConv.h"#include <iostream>#include <complex>using namespace std;int main() {    int i = 1234;    cout << "i == \"" << toString(i) << "\"\n";    float x = 567.89;    cout << "x == \"" << toString(x) << "\"\n";    complex<float> c(1.0, 2.0);    cout << "c == \"" << toString(c) << "\"\n";    cout << endl;    i = fromString<int>(string("1234"));    cout << "i == " << i << endl;    x = fromString<float>(string("567.89"));    cout << "x == " << x << endl;    c = fromString< complex<float> >(string("(1.0,2.0)"));    cout << "c == " << c << endl;} ///:~  


quote:
The output is what you’d expect:
i == "1234"
x == "567.89"
c == "(1,2)"
i == 1234
x == 567.89
c == (1,2)

This topic is closed to new replies.

Advertisement