c++里怎么把string转换为double?

msy2518 2008-10-17 12:09:14
比如“123456”
怎么转换为double的
...全文
28712 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
taozi328 2012-06-28
  • 打赏
  • 举报
回复
可以用strtod() atof()
冻结 2008-10-18
  • 打赏
  • 举报
回复
有好多这种函数,如itoa(),atoi(), ftoa(), atof().等等。
hjd1056 2008-10-18
  • 打赏
  • 举报
回复
学习了
plusbug 2008-10-18
  • 打赏
  • 举报
回复
自己写的话粗糙的方法感觉可以用 单个位上的字符读取,然后再用字符表转化,只是求整体位数时要用string的长度,比较麻烦,
不知 上述函数 实现的细节是怎么样的
sukekiyo 2008-10-18
  • 打赏
  • 举报
回复
用stringstream
surpass2007 2008-10-18
  • 打赏
  • 举报
回复
学习下!
aaajj 2008-10-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 acrobatyuer 的回复:]
整体上说,在这个帖子里最不满意的估计就是LZ的揭拈率啦!
[/Quote]
呵呵
giant1st 2008-10-18
  • 打赏
  • 举报
回复
#include<iostream>
#include <string>
using namespace std;

int main()
{
string str = "123456";
double dblValue = atof(const_cast<const char *>(str.c_str()));
cout<<dblValue<<endl;
return 0;
}

c_str()实现由string转向char * 后再强制转换
acrobatyuer 2008-10-18
  • 打赏
  • 举报
回复
整体上说,在这个帖子里最不满意的估计就是LZ的揭拈率啦!
acrobatyuer 2008-10-18
  • 打赏
  • 举报
回复
不错...又学几个新函数....
bargio_susie 2008-10-18
  • 打赏
  • 举报
回复
	string str = "1234.567";
double d;

stringstream sstr(str);
sstr >> d;
cout << d << endl;
elegant87 2008-10-18
  • 打赏
  • 举报
回复

#include<iostream>
#include<cstdlib>
using namespace std;

int main()
{
char* str="2367";
double dvalue=atof(str);
cout<<dvalue<<endl;
return 0;
}
elegant87 2008-10-18
  • 打赏
  • 举报
回复
学习了!
迷途的书童 2008-10-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fenghuijun135 的回复:]
+ 函数说明
- + atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
- ==哈工大 Wiki 所有分项== + 返回值
+ 返回转换后的浮点型数。
+ 附加说明
+ atof()与使用strtod(nptr,(char**)NULL)结果相同。
+ 范例
+ /* 将字符串a 与字符…
[/Quote]

学习。。。
overbai 2008-10-18
  • 打赏
  • 举报
回复
#include <iostream>
#include <sstream>
#include <typeinfo>

using namespace std;

int main()
{
double tmp;
cout << typeid(tmp).name() << endl;//用于验证tmp的类型
string str = "abcdef";
cout << typeid(str).name() << endl;
istringstream istr(str);
istr >> tmp;

cout << tmp << endl;
return 0;
}
Dan_M 2008-10-18
  • 打赏
  • 举报
回复
atof函数
string str = "123456"
double dblValue = _atof(str);

fox000002 2008-10-17
  • 打赏
  • 举报
回复
atof
王小工 2008-10-17
  • 打赏
  • 举报
回复
strtod(nptr,(char**)NULL)
还有这个函数啊
boys2002 2008-10-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fenghuijun135 的回复:]
+ 函数说明
- + atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
- ==哈工大 Wiki 所有分项== + 返回值
+ 返回转换后的浮点型数。
+ 附加说明
+ atof()与使用strtod(nptr,(char**)NULL)结果相同。
+ 范例
+ /* 将字符串a 与字符…
[/Quote]


顶下
fenghuijun135 2008-10-17
  • 打赏
  • 举报
回复
+ 函数说明
- + atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
- ==哈工大 Wiki 所有分项== + 返回值
+ 返回转换后的浮点型数。
+ 附加说明
+ atof()与使用strtod(nptr,(char**)NULL)结果相同。
+ 范例
+ /* 将字符串a 与字符串b转换成数字后相加*/
+ #include<stdlib.h>
+ main()
+ {
+ char *a=”-100.23”;
+ char *b=”200e-2”;
+ float c;
+ c=atof(a)+atof(b);
+ printf(“c=%.2f\n”,c);
+ }
+ 执行
+ c=-98.23

65,202

社区成员

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

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