cin的问题?
在C中,我可以控制输入的格式,比如可以如下将输入的10当作数值
char cmd;
scanf("%d",&cmd);
如果用cin该如何弄拉?
问题点数:100、回复次数:9Top
1 楼rtdb(东临碣石)回复于 2003-12-02 18:03:19 得分 10
cin>>cmd;
Top
2 楼piaorenqian(湖心孤舟)回复于 2003-12-02 18:08:43 得分 0
如果这样输入,比如输入 10, 结果是1这个字符存在cmd中,而我需要的结果却是cmd在内存中的值为数值10,Top
3 楼fierygnu(va_list)回复于 2003-12-02 18:13:41 得分 30
char cmd;
scanf("%d",&cmd);
这个是错误的,%d希望的是int*,这样使用会有非法内存写入问题。
所以,cin >>cmd要实现只能是:
1、输入ASCII码为10的字符
2、用一个int接收输入10,然后赋值给cmd。Top
4 楼antijpn(antijpn)回复于 2003-12-02 18:15:36 得分 20
那就用int类型的变量啊,iostream库对>>操作符进行了重载,而且进行了类型检查,而scanf和printf之类的变参函数无法进行类型匹配,所以没有办法按照你的想法把10放到一个char类型的变量里面,除非你进行强制类型转换。Top
5 楼piaorenqian(湖心孤舟)回复于 2003-12-02 18:25:27 得分 0
不会吧,有错误吗?我一直都是这样用c格式输入的!
其实结果就象这样的
cmd = 10;
Top
6 楼piaorenqian(湖心孤舟)回复于 2003-12-02 18:30:08 得分 0
其实我的目的是输入一个字节的数值,一个无符号字节可以表示0-255,我的目的就是想直接将输入的一个书当作一个字节的数值存在unsigned char 中Top
7 楼cai114(硬鸡常空(KingKong归来))回复于 2003-12-02 20:38:36 得分 20
强制类型转换一下吧,这样还省不少事Top
8 楼hdslah()回复于 2003-12-02 21:48:44 得分 20
0-127可用以格式输入,但大于则不行Top
9 楼fierygnu(va_list)回复于 2003-12-03 09:34:41 得分 0
“我一直都是这样用c格式输入的!”,说明你一直走在悬崖边,还说明你一直用x86机器。
这样是不对的。
Top




