小声的问个std::string的问题,怎么用起来特麻烦呢?
以前一直做BCB和DELPHI,比较习惯于AnsiStirng这样的懒汉字符串类。刚刚开始接触STD,所以特意在最近的项目中尽量用STD,但是std::string用的我很不顺手,特意小声问问,请大虾们指教。
问:
std::string提供了compare(),find(),assign(),及迭代器函数,还有dec,hex等数制变化等,但是有没有提供各种数据类型与它之间的变换函数呢?就象BCB里的IntToStr(),TryStrToInt(),TryStrToFloat(),TDate.DateString()?
我觉得std::string最让我头疼的就是类型转换:字符串与整数之间、字符串与浮点数之间、字符串与日期时间之间、字符与ASCII码之间,好像都要自己写。是这样吗?
相比来BCB的AnsiString类比较好用,常用的转换函数几乎都有现成的,std::string如果没有提供这些功能,那么应该在什么情况下用比较合适呢?
望大虾赐教。
问题点数:40、回复次数:6Top
1 楼xteaj(半桶水)回复于 2004-10-03 09:56:19 得分 3
如果程序要移植到其他环境中重新编译,最好用STL,否则用AnsiString确实方便很多。
现在,在Linux中也有了Kylix3,不怕AnsiString的移植问题,所以用AnsiString也没问题。
Top
2 楼somedummy(某人马甲)回复于 2004-10-03 10:04:14 得分 2
std::string似乎没有提供operator char*,但是它提供了std::string::c_str()这个函数,通过这个函数就可以调用atoi之类的函数了
//示例
std::string mystr("123");
int ival=atoi(mystr.c_str());Top
3 楼newegg2002(同志们,同胞们,大学的四年,是扎实基础的四年!!)回复于 2004-10-03 10:48:25 得分 0
是啊..,
尤其就是std::string和char *之间不能相互转换..
会引出好多问题..
Top
4 楼liusamye(liusamye)回复于 2004-10-03 11:09:48 得分 0
看来是不太好用呀,谢谢各位了。Top
5 楼heroboy2000(动感超人)回复于 2004-10-03 14:26:50 得分 35
使用stringstream
stringstream ss;
int i=1;
ss<<i;
string s=ss.str();
int j;
ss>>j;Top
6 楼liusamye(liusamye)回复于 2004-10-04 09:24:09 得分 0
heroboy2000(动感超人)的代码解决了我的大部分问题,我想分数都应该给他了,同时谢谢其他大虾给我的回答。Top




