如何将用户输入char转换为Double C ++

时间:2015-04-07 06:30:07

标签: c++ char double atof

我试图找出一种获取用户输入字符并将其转换为double的方法。我尝试了atof功能,但似乎只能用于常量字符。有没有办法做到这一点?以下是我想做的事情的想法:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>

int main(){

    char input;
    double result;

    cin >> input; 

    result = atof(input);
}

3 个答案:

答案 0 :(得分:2)

atof字符串(不是单个字符)转换为double。如果您想转换单个字符,有多种方式:

  • 通过附加空字符并将其转换为double
  • 来创建字符串
  • 从字符
  • 中减去48(&#39; 0&#39;的ASCII值)
  • 使用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