读书人

string类型的quot;0.9144quot;怎么转换成float

发布时间: 2013-08-10 21:14:06 作者: rapoo

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

读书人网 >C++

热点推荐