首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

string类型的"0.9144"怎么转换成float类型的0.9144

2013-08-10 
string类型的0.9144如何转换成float类型的0.9144?string类型的0.9144如何转换成float类型的0.9144?Str

string类型的"0.9144"如何转换成float类型的0.9144?
string类型的"0.9144"如何转换成float类型的0.9144? String float 类型转换
[解决办法]
用函数atof?
[解决办法]
atof函数可以实现.

[解决办法]
atof     <math.h> and <stdlib.h> 
double atof( const char *string );
[解决办法]
lz是不是在做渣打银行codemarathon的那个测试题啊  呵呵  atof
[解决办法]
我写的代码:望指教

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
#include <sstream>
#include <map>

using namespace std;

ifstream input("input.txt");
ofstream output("output.txt");

map<string,string> divisionMap;

double deal(string str1,string str2)
{
if (str2 == "feet")
{
str2 = "foot";
}
map<string,string>::iterator it = divisionMap.find(str2);
if (it == divisionMap.end())
{
it = divisionMap.find(str2.substr(0,str2.length()-1));
if (it == divisionMap.end())
{
it = divisionMap.find(str2.substr(0,str2.length()-2));
if (it == divisionMap.end())
{
return 0;
}
}
}

return atof(str1.c_str())*atof((it->second).c_str());
}

int main()
{
double sum = 0.0;
string strline = " ";
string strword1 = " ";
string strword2 = " ";
string division,meters;

while (getline(input,strline) && strline != "")//建立 转换关系映射
{
istringstream line(strline);
while(line>>division>>division>>meters>>meters)
{
divisionMap.insert(make_pair(division,meters));


}
}

output<<"wang_chp@sina.cn"<<endl<<endl;
bool minus = false;
while(getline(input,strline) && strline != " ") //处理表达式
{
istringstream line(strline);
while(line>>strword1)
{
if (strword1 == "+")
{
continue;
}
if (strword1 == "-")
{
minus = true;
continue;
}
line>>strword2;

if (minus)
{
sum += -deal(strword1,strword2);
minus = false;
}else{
sum += deal(strword1,strword2);
}
}
    output<<setiosflags(ios::fixed)<<setprecision(2)<<sum<<" m"<<endl;
sum = 0;
}
input.close();
output.close();
return 0;
}



[解决办法]
NAME
       strtod, strtof, strtold - convert ASCII string to floating-point number

SYNOPSIS
       #include <stdlib.h>

       double strtod(const char *nptr, char **endptr);
       float strtof(const char *nptr, char **endptr);
       long double strtold(const char *nptr, char **endptr);
[解决办法]
你可以用C++标准库的istringstream,boost的lexical_cast。
[解决办法]
float f;
string str = "0.9144";
f = atof(str.data());

[解决办法]
Stringstream
[解决办法]
Stringstream

热点排行