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

     

    /* 

    2

    (C) OOMusou 2006 http://oomusou.cnblogs.com

    3

    4

    Filename    : stringstream_to_double.cpp

    5

    Compiler    : Visual C++ 8.0

    6

    Description : Demo how to convert string to any type.

    7

    Release     : 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

     

    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

     

    void convertFromString(T &value, const std::string &s) {

    34

      std::stringstream ss(s);

    35

      ss >> value;

    36

    }

     

    源文档 <http://www.cnblogs.com/oomusou/archive/2006/10/10/525647.html>

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值