1

所以我知道如何在 C# 中做到这一点,但不是 C++。我正在尝试将给予者用户输入解析为双精度(稍后进行数学运算),但我是 C++ 新手并且遇到了麻烦。帮助?

C#

 public static class parse
        {
            public static double StringToInt(string s)
            {
                double line = 0;
                while (!double.TryParse(s, out line))
                {
                    Console.WriteLine("Invalid input.");
                    Console.WriteLine("[The value you entered was not a number!]");
                    s = Console.ReadLine();
                }
                double x = Convert.ToDouble(s);
                return x;
            }
        }

C++?? ? ?

4

5 回答 5

2

看看atof。请注意, atof 采用 cstrings,而不是 string 类。

#include <iostream>
#include <stdlib.h> // atof

using namespace std;

int main() {
    string input;
    cout << "enter number: ";
    cin >> input;
    double result;
    result = atof(input.c_str());
    cout << "You entered " << result << endl;
    return 0;
}

http://www.cplusplus.com/reference/cstdlib/atof/

于 2013-05-30T17:44:04.090 回答
1
std::stringstream s(std::string("3.1415927"));
double d;
s >> d;
于 2013-05-30T17:43:20.630 回答
1

这是我的答案的简化版本,用于转换为intusing std::istringstream

std::istringstream i("123.45");
double x ;
i >> x ;

您还可以使用strtod

std::cout << std::strtod( "123.45", NULL ) << std::endl ;
于 2013-05-30T17:43:46.767 回答
0

使用atof

#include<cstdlib>
#include<iostream>

using namespace std;

int main() {
    string foo("123.2");
    double num = 0;

    num = atof(foo.c_str());
    cout << num;

    return 0;
}

输出:

123.2
于 2013-05-30T17:42:47.410 回答
0
string str;
...
float fl;
stringstream strs;
strs<<str;
strs>>fl;

这会将字符串转换为浮点数。您可以使用任何数据类型代替浮点数,以便将字符串转换为该数据类型。您甚至可以编写一个将字符串转换为特定数据类型的通用函数。

于 2013-05-30T17:43:58.400 回答