问一个C++的简单问题

anggogo 2003-09-13 03:42:24
请问把一个 unsigned long 的数字转换称字符串并得到数字的长度的方法有多少种呢?

我可以用

//_number 是一个 unsigned long
cin >> _number;

char number[20];
itoa(_number,number,10);
int length = strlen(number);

或者可以

char* number;
itoa(_number,number,10);
int length = strlen(number);

得到的length都是正确的,但是似乎 number 已经不是原来的那串东西了。
第一种方法用 count << number[0]; 打印出来只是乱七八糟的东西;
第二种方法用 count << *number 也是乱七八糟的字符,而不是期望的数字。

请问应该如何做呢?没有 string 这些类真是用的好累。(我知道c++还是有一个 string 类的,但那个似乎只是一个自定义的类,而且好像没有 string s = string (long) 这样 override 的 constructor, 否则我也想用那个东西)

我是C++的新手,请多指教。

一般使用字符串的时候是用什么方法呢?用指针的多还是都是先定义好大小那样用呢?


...全文
30 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2003-09-13
  • 打赏
  • 举报
回复
不过第一个回答好像是对的。^_^
晨星 2003-09-13
  • 打赏
  • 举报
回复
哦,对,是我糊涂了。
刚刚陪同学喝酒喝的,抱歉。:)
jxbicestare 2003-09-13
  • 打赏
  • 举报
回复
unsigned long _number

怎么会有"-" ?
晨星 2003-09-13
  • 打赏
  • 举报
回复
注意length不一定为“数字”的长度,因为对于负数,前面还多个“-”。
晨星 2003-09-13
  • 打赏
  • 举报
回复
char number[20];
unsigned long _number;
cin >> _number;
int length = sprintf(number , "%lu" , _number);
gufengduyu 2003-09-13
  • 打赏
  • 举报
回复
char* number;
itoa(_number,number,10);
这样用竟然还对???number都没分配空间

char number[20];
itoa(_number,number,10);
int length = strlen(number);
这么用是正确的

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧