注册 登录
编程论坛 C++教室

[原创]把一串字符串转换为整型

kai 发布于 2004-05-07 05:20, 3934 次点击
把一串字符串转换为整型

// first method sscanf ANSI C #include <stdio.h> #include <stdlib.h>

int main() { char * buffer = "4711"; int number; int ret;

ret = sscanf(buffer, "%d", &number);

if (ret) // success { printf("%d\n", zahl); }

system("pause"); return 0; }

#include <stdio.h> #include <stdlib.h> int main() { char * buffer = "4744"; int i; char s[20]; double d; int ret_ok; ret_ok = sscanf(buffer, "%d - %s - %g", &i, s, &d);

if(ret_ok) printf("%d\n", i);

system("pause"); return 0;

}

// second method atoi (ANSI C) #include <stdio.h> #include <stdlib.h> int main() { char* buffer = "1234"; int number;

number = atoi(buffer);

printf("%d\n", number);

system("pause"); return 0; } //3. Method - strtoul (ANSI C) #include <stdio.h> #include <stdlib.h>

int main() { char * buffer = "123456"; const int radix = 10; unsigned long number; char * error;

number = strtoul(buffer, &error, radix);

if (!*error) { /* no error */ printf("%d\n", number); } system("pause"); return 0; } 4. Method - stringstream (ANSI C++) // compiled und run in VC 6.0, // BC don't support sstream.h

#include <sstream> #include <iostream>

using namespace std;

int main() { char * buffer = "1234"; int number;

stringstream ss(buffer); ss>>number;

if(!ss) { /* error */ exit(1); } else cout<<number; return 0; }

// compiled und run in VC 6.0 #include <sstream> #include <iostream>

using namespace std;

int main() { char * buffer = "123456"; stringstream ss; ss << buffer;

// now ist ss.str() die number in Stringrepresentation. cout<<ss.str()<<endl;

// or through the number you get the value int number; ss>>number; cout<<number<<endl; system("pause");

return 0; }

[此贴子已经被作者于2004-05-10 15:22:17编辑过]

5 回复
#2
C++大粉丝2004-05-10 10:27
atol(const char*)
#3
timedcy2007-03-19 20:49
atoi()
#4
蓝一2008-06-02 23:13
才发现
KAI的代码真漂亮
#5
mqh213642008-06-03 10:05


#6
slongta2009-12-29 22:53
得学习了···
1