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

C++ C++;使用atof将字符串转换为double,c++,string,double,atof,C++,String,Double,Atof,我无法使atof()函数工作。我只希望用户输入值(以十进制数字的形式),直到他们输入“|”,然后它就会打破循环。我希望最初将值作为字符串读入,然后转换为双精度,因为我在过去使用这种输入方法时发现,如果输入数字“124”,它将中断循环,因为“124”是“|”字符的代码 我环顾四周,发现了atof()函数,它显然将strings转换为doubles,但是当我尝试转换时,我得到了消息 “不存在从std::string到const char的合适转换函数” 我似乎不明白这是为什么 void distan

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

我环顾四周,发现了
atof()
函数,它显然将
string
s转换为
double
s,但是当我尝试转换时,我得到了消息

“不存在从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();
}
void distance_vector(){
双倍合计=0.0;
双平均值=0.0;
字符串输入=”;
双转换=0.0;
载体a;
而(cin>>输入和输入比较(“|”)=0){
转换=atof(输入);
a、 推回(转换);
}
保持窗口打开();
}
您需要

atof(input.c_str());
这就是所讨论的“适当的转换函数”

std::string::c_str

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

你需要

atof(input.c_str());
这就是所讨论的“适当的转换函数”

std::string::c_str

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


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

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

您可以查阅
strtod
(例如,如果您使用的是Linux/Unix,则可以查阅
man strtod
)的文档,以了解有关此函数的更多详细信息。

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

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

如果您使用的是Linux/Unix,您可以查阅
strtod
(例如
man-strtod
)的文档,以了解有关此函数的更多详细信息。

现在我已经回答并获得了经验,现在有必要找到重复的问题。既然我已经回答并获得了经验,现在我有理由找到重复的问题。