Sha*_*810 1 c++ string double atof
我无法使用该atof()功能。我只希望用户输入值(以十进制数字的形式),直到他们输入'|',然后打破循环。我希望这些值最初以字符串形式读取,然后转换为双精度,因为我在过去使用此输入法时发现过,如果输入数字“ 124”,则会中断循环,因为“ 124”是“ |”的代码 字符
我四处张望,发现了atof()将strings 转换为doubles 的函数,但是当我尝试转换时,得到消息
“不存在从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();
}
Run Code Online (Sandbox Code Playgroud)
你需要
atof(input.c_str());
Run Code Online (Sandbox Code Playgroud)
那就是有问题的“合适的转换功能”。
std::string::c_str 说明文件:
const char * c_str()const;
获取等效的C字符串
返回指向包含以N结束的字符序列(即C字符串)的数组的指针,该字符串表示字符串对象的当前值。
您还可以使用该strtod函数将字符串转换为双精度:
std::string param; // gets a value from somewhere
double num = strtod(param.c_str(), NULL);
Run Code Online (Sandbox Code Playgroud)
您可以查找文档strtod(例如,man strtod如果您使用的是 Linux / Unix)以查看有关此功能的更多详细信息。
| 归档时间: |
|
| 查看次数: |
18142 次 |
| 最近记录: |