如何将std::string转int,double? (C/C++) (C) (template)

本文介绍两种在C++中实现字符串与整数、浮点数互相转换的方法:使用C库函数atoi/atof结合c_str(), 以及利用stringstream进行模板化类型转换。这两种方法适用于Visual C++ 9.0/Visual Studio 2008环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:http://www.cnblogs.com/oomusou/archive/2006/10/10/525647.html

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
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 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}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值