2 qq 31214517 qq_31214517 于 2016.03.25 13:22 提问

问一下关于string的问题

为什么我用之后i.length还是非法的语句?不能这么写吗?那我想逐位读取未知长度的string
并将其累加要怎么写?
void main() {
int j;
string i;
cout << "请输入一个数字" << endl;
cin >> i;
cout << "请输入进制" << endl;
cin >> j;
switch (j)
{
case 10:cout.setf(ios::hex);
{int a;
{int b = 0;
for (a = 0; a < i.length; a++)
b = b + a;
cout << b << endl;
cout.unsetf(ios::hex);
break; }
}

4个回答

huixion
huixion   2016.03.25 13:24
已采纳

i.length() ??

huixion
huixion 回复qq_31214517: 不客气
一年多之前 回复
zjzjzj9999
zjzjzj9999 kanbud??
一年多之前 回复
qq_31214517
qq_31214517 回复huixion: 虽然不知道原理,但按你发来的那个帖子说的做了确实有用,谢谢!!
一年多之前 回复
qq_31214517
qq_31214517 回复huixion: 哦哦,我看一看
一年多之前 回复
qq_31214517
qq_31214517 回复乐古: 我用的是c++,cout是可以进行格式输出的,然而用了之后却一点用都没有....
一年多之前 回复
meng20166
meng20166 因为在java中,数据类型只识别10进制,是不是别16进制的,所以你把它转换成long的时候它自动转换成10进制了
一年多之前 回复
huixion
huixion 回复qq_31214517: 没学过C++。。。。。。你看一下这个看看有没有帮助http://bbs.csdn.net/topics/120020610
一年多之前 回复
qq_31214517
qq_31214517 哦,对对对,那为什么我输出时还是10进制数呢?我明明转换成16进制格式了
一年多之前 回复
meng20166
meng20166   Rxr 2016.03.25 13:29

String不能直接强转成long,应该用下面的语法:
long l = Long.parseLong([String]);

meng20166
meng20166 你可以看一下,其实10进制转成16进制后的字符类型是String
一年多之前 回复
qq_31214517
qq_31214517 问一下为什么我累加后的输出还是10进制数呢?我明明转换成16进制格式了
一年多之前 回复
meng20166
meng20166   Rxr 2016.03.25 13:49

因为在java中,数据类型只识别10进制,是不是别16进制的,所以你把它转换成long的时候它自动转换成10进制了

Aaron_005
Aaron_005   2016.03.25 22:24

c++有学过,这个还真不懂,,涉及到进制问题。。学到了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!