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

犯愁:如何将数字字符转换成数字

spider1074 发布于 2007-07-04 11:55, 3222 次点击
输入一串数字字符,要求将这串数字字符转换成数字输出。
想了半天也想不出来,如何实现字符和数字的转换??
求教下如何实现。。。。。。。。。。
11 回复
#2
aipb20072007-07-04 12:01
#include <sstream>
#include <iostream>
using namespace std;

int main(){
string str;
int num;
cin >> str;
istringstream in(str);
in >> num;
}

[此贴子已经被作者于2007-7-4 12:02:38编辑过]

#3
spider10742007-07-04 13:16
回复:(aipb2007)#include #include...

有些地方看不不懂,想问下<sstream>是不是就是原来的〈strstrea.h>?
还有那个istringstream就是原来的istrstream吧,没办法,我的书都还是以前的那些头文件,所以。。。。。。

#4
HJin2007-07-04 13:20
atoi / atol is the original c function you may want to use.

If I rememberd correct, these two function are not in standard C libray --- i.e., it may not be compatible accross platforms/compliers.
#5
spider10742007-07-04 13:47
回复:(HJin)atoi / atol is the original c functi...

嗯,谢谢,我查了下,〈stdlib.h>中的atoi和atol函数确实有这功能。
你说的那两个函数不是标准C里面的也没错,好像是标准C++里面的,我用是老版本的C++,所以就想了解下是不是从老版本转过来的。。。。

#6
zkkpkk2007-07-04 21:16
char c='9';
int i=c-48;
#7
spider10742007-07-05 22:11
回复:(zkkpkk)char c=\'9\';int i=c-48;
这种方法好像只适用于单个数字字符,不过不是很感谢。。。。。。
#8
spider10742007-07-05 22:18

问题已解决,感谢aipb2007和HJin版主,还有zkkpkk。。。
aipb2007的程序不能直接在我这里实现,不过稍微改下便可以了。程序修改之后如下:
#include <strstrea.h>
#include <iostream.h>
void main()
{
char str[80];
int num;
cin >> str;
istringstream in(str);
in >> num;
cout<<num<<endl;
}

#9
zkkpkk2007-07-05 23:32
以下是引用spider1074在2007-7-5 22:11:48的发言:
这种方法好像只适用于单个数字字符,不过不是很感谢。。。。。。

你就是说字符,一串的叫字符串

#10
璇璇贺贺2007-07-06 03:21

8楼答案还是有些看不懂,
// istringstream in(str);
in >> num;
????
顺便补充一点
2楼代码中的 #include <sstream>
#include <iostream>
using namespace std; 开始有些看不懂。
搜了一下,解释如下,希望与菜鸟同胞们共同学习一下:


<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,
二者是两个文件,打开文件就会发现,里面的代码是不一样的。

后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,
声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。

因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。



哈哈

#11
zkkpkk2007-07-06 07:18

你要的是古典C++啊


#include <iostream.h>
#include <string.h>
int main()
{
    char* str=\"123\";
    int a=0,l=strlen(str);

    for(int i=0;i<l;i++)
        a=a*10+str[i]-48;
    cout<<a;
    return 0;
}

[此贴子已经被作者于2007-7-6 7:19:11编辑过]

#12
aipb20072007-07-06 11:36
我就是很用不来c风格字符串,很容易混淆和弄错。

有空要好好看看。
1