将string转换为double(转)

Abstract
std::string为library type,而int、double为built-in type,两者无法利用(int)或(double)的方式互转,本文提出轉換的方式。

Introduction
使用環境:Visual C++ 9.0 / Visual Studio 2008

Method 1:
使用C的atoi()與atof()。

先利用c_str()轉成C string,再用atoi()與atof()。

string_to_double.cpp / C++

1  /*  
2  (C) OOMusou 2008 http://oomusou.cnblogs.com
3 
4  Filename    : string_to_double.cpp
5  Compiler    : Visual C++ 9.0 / Visual Studio 2008
6  Description : Demo how to convert string to int (double)
7  Release     : 08/01/2008 1.0
8  */
9 
10  #include < iostream >
11  #include < string >
12  #include < cstdlib >
13 
14  using   namespace std;
15 
16  int main() {
17    string s =   " 123 " ;
18    double n = atof(s.c_str());
19    // int n = atoi(s.c_str());
20   
21    cout << n << endl;
22  }


Method 2:
利用stringstream

这里使用functon template的方式将std::string转int、std::string转double。

stringstream_to_double.cpp / C++

1 ExpandedBlockStart.gif ContractedBlock.gif /**/ /* 
2(C) OOMusou 2006 http://oomusou.cnblogs.com
3
4Filename    : stringstream_to_double.cpp
5Compiler    : Visual C++ 8.0
6Description : Demo how to convert string to any type.
7Release     : 11/18/2006
8*/

9 #include < iostream >
10 #include < sstream >
11 #include < string >
12
13 template < class T >  
14 void convertFromString(T & , const std:: string   & );
15
16 ExpandedBlockStart.gifContractedBlock.gif int main() {
17  std::string s("123");
18
19  // Convert std::string to int
20  int i = 0;
21  convertFromString(i,s);
22  std::cout << i << std::endl;
23
24  // Convert std::string to double
25  double d = 0;
26  convertFromString(d,s);
27  std::cout << d << std::endl;
28
29  return 0;
30}

31
32 template < class T >  
33 ExpandedBlockStart.gifContractedBlock.gif void convertFromString(T & value, const std:: string   & s) {
34  std::stringstream ss(s);
35  ss >> value;
36}

你可能感兴趣的:(将string转换为double(转))