2013-05-30 94 views
1

所以我知道如何在C#中完成,而不是C++。我試圖解析giver用戶輸入到一個double(稍後做數學),但我是C++的新手,並且遇到了麻煩。幫幫我?將輸入字符串轉換爲float/double 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++ ? ? ? ?

+2

[ATOF](http://www.cplusplus.com/reference/cstdlib/atof/) – yngccc

+0

http://stackoverflow.com/questions/1012571/stdstring-to-float - 或 - 雙 – R3D3vil

+0

不完全相同的問題,但方法是相同的:http://stackoverflow.com/questions/16181630/how-to-check-stdstring-if-its-indeed-an-integer/16181759#16181759 –

回答

2

看看atof。請注意atof需要cstrings,而不是字符串類。

#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/

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 
1
std::stringstream s(std::string("3.1415927")); 
double d; 
s >> d; 
1

這是簡化我的回答here的版本,這對於轉換爲int使用std::istringstream

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

您還可以使用strtod

std::cout << std::strtod("123.45", NULL) << std::endl ; 
0
string str; 
... 
float fl; 
stringstream strs; 
strs<<str; 
strs>>fl; 

將其轉換爲浮動字符串。 您可以使用任何數據類型來代替float,以便將字符串轉換爲該數據類型。你甚至可以編寫一個將字符串轉換爲特定數據類型的通用函數。