把int转换成string,哪种方法最方便?

sheve 2002-01-28 08:25:36
C++标准库的string设计得很好,不过我不知道怎样方便地把int转换成string。
在Java和C#中,有方便的toString()方法,在C++中用itoa()太麻烦,不知有什么好办法。
另外,我发现MFC不怎么支持string,接受CString类型参数的函数好象不接受string,还非得用string的c_str()不可,真是麻烦,看来MFC在设计上不但对面向对象特性的支持不好,还在语言用法上与我热爱的标准C++背道而弛,实在是越用越气闷。
...全文
34621 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
unwritewolf 2010-06-12
  • 打赏
  • 举报
回复
8年了!!~~~
tinnest 2010-05-27
  • 打赏
  • 举报
回复
有幸回复2002年的帖子,是莫大的荣幸。。
那时候我还读六年级呢= =
qqchen79 2002-01-31
  • 打赏
  • 举报
回复
#include <sstream>
using namespace std;
...
stringstream sstrm;
sstrm << 123;
return sstrm.str();
...
sheve 2002-01-30
  • 打赏
  • 举报
回复
String str("Java 更方便");
System.out(str+123123);
LLnju 2002-01-30
  • 打赏
  • 举报
回复
char buf[1024+1];
std::ostrstream os( buf , 1024 );
os << "还是C++最方便嘛" << 123123 << std::endl;
os.put(0);//null term. 各位老大, 这个最标准的用法是怎么的,thx.
std::cout << os.str() << endl;
school 2002-01-29
  • 打赏
  • 举报
回复
itoa()与ANSI标准是不兼容的,sprintf()与ANSI标准兼容。
#include <stdio.h>
#include <stdlib.h>
void main(void);
void main(void)
{
int num=100;
char str[25];
sprintf(str,"%d",num);
printf("The number 'num' is %d and the string 'str' is %s.\n",num,str);
}
sheve 2002-01-29
  • 打赏
  • 举报
回复
不是CString,是标准C++中的string。
atoi()总是不方便,第一个参数是char[],第二个是int,第3个是基数,好象无法动态确定转换后的字符数。
Azi03 2002-01-29
  • 打赏
  • 举报
回复
用这句话就可以了:
CString MyString(itoa(Value,Temp,10));
LLnju 2002-01-29
  • 打赏
  • 举报
回复
C++中可以用 strstream 嘛,用起来很方便嘛。
  • 打赏
  • 举报
回复
hao
u1traSparC 2002-01-28
  • 打赏
  • 举报
回复
MFC是windows程序设计的一种应用框架,只是一种模式的具体的实现。STL是实现模式的利器。
当然可以用STL写出一个MFC,不过可能需要花很多力气,干嘛有P4了还要用8086呢?
mathe 2002-01-28
  • 打赏
  • 举报
回复
不需要重载operator+了,因为compiler会自动转化int to string了,然后使用两个string的+ operator. STL中的string是来源于template base_string<T>,这里T可以是任意类型,所以它当然不会对字符型的string作特殊处理,所以一些带特殊要求的函数就没有提供了。至于MFC拒绝STL,那应该Microsoft的商业目的吧。其实我觉得如果用熟了STL后,MFC也就可有可无了(除非你怎天之跟界面打交道)。
sheve 2002-01-28
  • 打赏
  • 举报
回复
to mathe()
那也烦,要支持java中类似的方式,还得自己重载operator +(),我觉得将数值类型嵌入string中是很常用的啊,我不知道string本身有没有类似的函数。
C#和Java有toString(),MFC的CString也有Format()函数,我觉得string应该也有。
string的c_str()可以转换为CString自然不错,但我觉得MFC根本无意采纳标准C++的东西,很令我等C++ fans不快。
mathe 2002-01-28
  • 打赏
  • 举报
回复
你自己写一个operator就行了,比如
operator string(int i){char temp[20];return string(itoa(i,temp,20));}
同样,要让CString接受string,也可以用
operator CString(string s){return CString(s.c_str());}
不过最好不要混合使用CString和string.你可以将你的程序划分为两个模块,其中同界面打交道的地方就随便用一用MFC中的垃圾,在同界面无关的模块中就不要用这种东东了。
sheve 2002-01-28
  • 打赏
  • 举报
回复
我说的是C++标准库中的string。
在java中,
String str("my age=");
str=str+25;
str就变成"my age=25";
我不知道标准C++中的string有没有类似方便的方法。
graph 2002-01-28
  • 打赏
  • 举报
回复
int ss;
char temp[64];
ss = 1000;
sprintf(temp, "%d", ss);
最简单的方法。
rockhard 2002-01-28
  • 打赏
  • 举报
回复
如果你觉得itoa不好用,就自己写个函数吧。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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