我试图找出一种获取用户输入字符并将其转换为double的方法。我尝试了atof
功能,但似乎只能用于常量字符。有没有办法做到这一点?以下是我想做的事情的想法:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
int main(){
char input;
double result;
cin >> input;
result = atof(input);
}
答案 0 :(得分:2)
atof
将字符串(不是单个字符)转换为double。如果您想转换单个字符,有多种方式:
switch
检查字符请注意,C标准不保证字符代码是ASCII格式,因此,第二种方法是不可移植的,因为它适用于大多数机器。
答案 1 :(得分:0)
以下是一种使用字符串流的方法(顺便说一下,您可能希望将std::string
转换为double
,而不是单个char
,因为您在后一种情况):
#include <iostream>
#include <sstream>
#include <string>
int main()
{
std::string str;
std::stringstream ss;
std::getline(std::cin, str); // read the string
ss << str; // send it to the string stream
double x;
if(ss >> x) // send it to a double, test for correctness
{
std::cout << "success, " << " x = " << x << std::endl;
}
else
{
std::cout << "error converting " << str << std::endl;
}
}
或者,如果您的编译器符合C ++ 11,则可以使用std::stod函数将std::string
转换为double
,例如
double x = std::stod(str);
后者基本上完成了第一个代码片段的功能,但是如果转换失败,它会引发std::invalid_argument
异常。
答案 2 :(得分:-1)
替换
char input
与
char *input