C ++使用atof将字符串转换为double

时间:2013-07-12 16:00:55

标签: c++ string double atof

我无法使用atof()函数。我只希望用户输入值(以十进制数字的形式),直到他们输入'|'然后它就会打破循环。我希望这些值最初以字符串形式读入,然后转换为双精度因为我在过去使用这种输入方法时发现,如果你输入数字'124'它会突破循环,因为'124'是'|'的代码焦炭。

我环顾四周,发现了atof()函数,它显然将字符串转换为双精度,但是当我尝试转换时,我得到消息“没有合适的转换函数从std :: string到const char存在”。我似乎无法弄清楚为什么会这样。

void distance_vector(){

double total = 0.0;
double mean = 0.0;
string input = " ";
double conversion = 0.0;
vector <double> a;

while (cin >> input && input.compare("|") != 0 ){
conversion = atof(input);
a.push_back(conversion);
}

keep_window_open();
}

2 个答案:

答案 0 :(得分:4)

你需要

atof(input.c_str());

这将是有问题的“合适的转换功能”。

std::string::c_str Documentation

  

const char * c_str()const;
  获取等效的C字符串
  返回一个指向数组的指针,该数组包含一个以空字符结尾的字符序列(即C字符串),表示字符串对象的当前值。

答案 1 :(得分:3)

您还可以使用strtod函数将字符串转换为double:

std::string param;  // gets a value from somewhere
double num = strtod(param.c_str(), NULL);

您可以查看strtod的文档(例如man strtod,如果您使用的是Linux / Unix),以查看有关此功能的更多详细信息。