zoukankan      html  css  js  c++  java
  • C++中int 转换成 string类型

    要是换在C#或Java,各种数据类型随便转换,有各种函数随便挑。但是在C++中还真没有那么简单。

    我本来是希望能够将123,这样的int类型转换的“123”这样的string,或者C-style也可以。

    我仔细查了一下C++string可用的方法:

    当然有了解了一下C++ 中String是什么!

    官方解释中,string是一种特殊的容器,用于存储字符集。它是basic_string模板类的char实现,可知另外一个就是wchar咯

    typedef basic_string<char> string;

    既然string是容器,那么自然有一些容器有的操作:

    如我们常见的size,push_back();当然还有begin,end,.

    并且我们有很多的方法包含了对C-style字符串共同处理。但是就是没有一个函数能够将int转换成string的。

    于是我们只能从另外一个角度出发了,先将int 转换成c-style字符串,然后转换成string。

    这种函数基本出现在c库中。

    方法一:通常在cstdlib中,有一个函数-itoa就是用来作这种转换的。

    char * itoa ( int value, char * str, int base );
    关联的方法还有atof,atoi.atol,但是注意这些都是C库中的函数,c库中的函数的特点就是字符串使用的是c-sytle字符串。
    但是最为悲剧的是,在UNIX中,没有这样一个itoa函数(上面标明是non-stondard)。
    于是我们只在看看其它的方法,在cstdio中,有众多有关输入输出的函数(也包括对文件的基本操作,一句话,对文件的输入输入就是标准的输入输入出,它需要一些基本的对文件的操作)。但例外的是,其中有一类函数是讲对字符串的输入输出——sprintf,sscanf.
    char temp[100];
    int ss=100;
    sprintf(temp, "%d", ss);
    这是利用了输入输出的特定情况来判定的,我们知道输入输出最直接的表示就是“显示”,不管是输出到文件中,屏幕上,还是字符串中,都是以字符串的形式出现的。所以,这种方式就是将100这样的一个在内存空间中只占8位的数据输出来,因为人只能看懂字符。
    那么这里就是利用上面所说的特点。
    方法二:使用cstdio中sprintf方法将int数据 ”显示“到字符串上。
    那么方法二是用的是c库中的输入输出方法,那么既然C++基本在使用流对象的形式从写了这里面的方法,有没有方法能够使用C++的方法做到这一点呢?可以的!
    int a;
    osstream ostr;
    ostr<<a;
    string s=ostr.str();
    看就这么直接得到了。
    方法三:使用sstream的方法
  • 相关阅读:
    洛谷P2292 [HNOI2004]L语言
    洛谷P4052 [JSOI2007]文本生成器(AC自动机)
    洛谷P3193 [HNOI2008]GT考试(KMP,矩阵)
    创建目录命令
    ssh免密码登录机器(使用公钥和秘钥进行加密来实现)
    kafka工作原理介绍
    KafKa集群安装、配置
    Kafka的partions和replication-factor参数的理解
    linux之find命令详解
    将用户需求和新型技术输入,优质服务和价值体验输出。
  • 原文地址:https://www.cnblogs.com/lidabo/p/2982392.html
Copyright © 2011-2022 走看看