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
)的文档,以了解有关此函数的更多详细信息。现在我已经回答并获得了经验,现在有必要找到重复的问题。既然我已经回答并获得了经验,现在我有理由找到重复的问题。