C++中将string类型转换为int, float, double类型 主要通过以下几种方式:

# 方法一: 使用stringstream

stringstream在int或float类型转换为string类型的方法中已经介绍过, 这里也能用作将string类型转换为常用的数值类型。

Demo:

  1. #include <iostream>
  2. #include <sstream>    //使用stringstream需要引入这个头文件
  3. using namespace std;
  4. //模板函数:将string类型变量转换为常用的数值类型(此方法具有普遍适用性)
  5. template <class Type>
  6. Type stringToNum(const string& str)
  7. {
  8. istringstream iss(str);
  9. Type num;
  10. iss >> num;
  11. return num;
  12. }
  13. int main(int argc, char* argv[])
  14. {
  15. string str("00801");
  16. cout << stringToNum<int>(str) << endl;
  17. system("pause");
  18. return 0;
  19. }

输出结果:

  801
 请按任意键继续. . .

  #方法二:使用atoi()、 atil() 、atof()函数  -----------------实际上是char类型向数值类型的转换

注意:使用 atoi 的话,如果 string s 为空,返回值为0.则无法判断s是0还是空

1. atoi():      int atoi ( const char * str );

说明:Parses the C string str interpreting its content as an integral number, which is returned as an int value.

参数:str : C string beginning with the representation of an integral number.

返回值:1. 成功转换显示一个Int类型的值.  2. 不可转换的字符串返回0.  3.如果转换后缓冲区溢出,返回 INT_MAX orINT_MIN

Demo:

  1. #include <iostream>
  2. using namespace std;
  3. int main ()
  4. {
  5. int i;
  6. char szInput [256];
  7. cout<<"Enter a number: "<<endl;
  8. fgets ( szInput, 256, stdin );
  9. i = atoi (szInput);
  10. cout<<"The value entered is :"<<szInput<<endl;
  11. cout<<" The number convert is:"<<i<<endl;
  12. return 0;
  13. }

输出:

Enter a number: 48

The value entered is : 48

The number convert is: 48

2.aotl():  long int atol ( const char * str );

说明:C string str interpreting its content as an integral number, which is returned as a long int value(用法和atoi函数类似,返回值为long int)

3.atof():  double atof ( const char * str );

参数:C string beginning with the representation of a floating-point number.

返回值:1. 转换成功返回doublel类型的值 2.不能转换,返回0.0。  3.越界,返回HUGE_VAL

Demo:

  1. /* atof example: sine calculator */
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5. int main ()
  6. {
  7. double n,m;
  8. double pi=3.1415926535;
  9. char szInput [256];
  10. printf ( "Enter degrees: " );
  11. gets ( szInput );
  12. //char类型转换为double类型
  13. n = atof ( szInput );
  14. m = sin (n*pi/180);
  15. printf ( "The sine of %f degrees is %f\n" , n, m );
  16. return 0;
  17. }

C++中将string类型转换为int, float, double类型 主要通过以下几种方式:的更多相关文章

  1. [C++] string与int, float, double相互转换

    参考:http://blog.csdn.net/candadition/article/details/7342380 将string类型转换为int, float, double类型 主要通过以下几 ...

  2. QT中QString 与 int float double 等类型的相互转换

    Qt中 int ,float ,double转换为QString 有两种方法 1.使用 QString::number(); 如: long a = 63; QString s = QString:: ...

  3. 将String类型转换为int整数类型

    示例如下: public class demo { public static void main(String[] args) { String s="10"; 6 7 //St ...

  4. sqlserver中将varchar类型转换为int型再进行排序的方法

    sql中把varchar类型转换为int型然后进行排序,如果我们数据库的ID设置为varchar型的 在查询的时候order by id的话 如果我们数据库的ID设置为varchar型的 在查询的时候 ...

  5. C语言中float,double类型,在内存中的结构(存储方式)

    C语言中float,double类型,在内存中的结构(存储方式)从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以doubl ...

  6. Java进阶(二十三)java中long类型转换为int类型

    java中long类型转换为int类型 由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参 ...

  7. 如何判断当前修改过的datatable的某一列值是否为int型或double类型

    如何判断当前修改过的datatable的某一列值是否为int型或double类型 今天在做datatable数据验证时碰到要对datatable的列数据进行数据类型校验,因此记录一下本人校验的方法,如 ...

  8. java中long类型转换为int类型

    由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考: 一.强制类型转换 [java] l ...

  9. 基于layui,Jquery 表格动态编辑 设置 编辑值为 int 或者 double 类型及默认值

    首先先推荐大家在看这篇笔记时,阅读过我写的这篇 Layui表格编辑[不依赖Layui的动态table加载] 阅读过上面那篇笔记之后呢,才能更好的理解我现在所要说的这个东西 接下来废话不多说,上代码. ...

随机推荐

  1. flash文件运动节奏的控制

    flash里面,比较难的是控制运动的节奏.参考了几个韩国网站的fla源文件,提出以下几个建议与参考. 1,flash文件里面,每秒的帧数 设置为 120,或者一个比较大的数字(90,60).普通的文件 ...

  2. Linux文件编程实例

    //捕获fopen调用中的错误 #include <stdio.h> #include <errno.h> #include <string.h> #define  ...

  3. MPICH2在两台Ubuntu上安装(用mpd做进程管理)

    本文在经过大量的实验终于不负众望成功的在两台Ubuntu 12.04上部署MPI的一个小型集群,MPICH2所用版本为mpich2-1.4.1,下载地址:http://www.mcs.anl.gov/ ...

  4. EF学习系列

    http://www.cnblogs.com/Wayou/archive/2012/09/20/EF_CodeFirst.html http://kb.cnblogs.com/zt/ef/#

  5. 使用Ajax.ActionLink时,点击对应的按钮会重新加载一个页面,而不是在当前页面的指定模块加载

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Instruments 使用指南

    Instruments 用户指南 http://cdn.cocimg.com/bbs/attachment/Fid_6/6_24457_90eabb4ed5b3863.pdf 原著:Apple Inc ...

  7. ionic list item-radio checked

    <div class="list"> <label class="item item-radio" ng-repeat="k in ...

  8. [flex & bison]编译器杂谈

    flex与bison是编译器设计工具.这里的编译器为广义,其中包括一般的编译器.脚本解析器等,需要进行语言结构解析来得出意义的程序. 当我们需要用一个语言来设计一款编译器时,需要考虑太多设计重心外的东 ...

  9. C51 库函数(2)

    3.2 STDIO.H:一般I/O函数 C51编译器包含字符I/O函数,它们通过处理器的串行接口操作,为支持其它I/O机制,只需修改getkey()和putchar()函数,其它所有I/O支持函数依赖 ...

  10. 【HDOJ】1313 Round and Round We Go

    大数乘,果断java A了. import java.util.Scanner; import java.lang.StringBuilder; import java.math.BigInteger ...