int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X。

string前后加上双引号,告诉编译器把它当成一串字符来解释。

注意:对于字符,需要区分字符和字符表示的数值。比如:char a = 8;char b = '8',a表示第8个字符,b表示字符8,是第56个字符。


int转化为string

1、使用itoa(int to string)

 1  //char *itoa( int value, char *string,int radix);
2 // 原型说明:
3 // value:欲转换的数据。
4 // string:目标字符串的地址。
5 // radix:转换后的进制数,可以是10进制、16进制等。
6 // 返回指向string这个字符串的指针
7
8 int aa = 30;
9 char c[8];
10 itoa(aa,c,16);
11 cout<<c<<endl; // 1e

注意:itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。

2、使用sprintf

 1  // int sprintf( char *buffer, const char *format, [ argument] … );
2 //参数列表
3 // buffer:char型指针,指向将要写入的字符串的缓冲区。
4 // format:格式化字符串。
5 // [argument]...:可选参数,可以是任何类型的数据。
6 // 返回值:字符串长度(strlen)
7
8 int aa = 30;
9 char c[8];
10 int length = sprintf(c, "%05X", aa);
11 cout<<c<<endl; // 0001E

3、使用stringstream

1  int aa = 30;
2 stringstream ss;
3 ss<<aa;
4 string s1 = ss.str();
5 cout<<s1<<endl; // 30
6
7 string s2;
8 ss>>s2;
9 cout<<s2<<endl; // 30

可以这样理解,stringstream可以吞下不同的类型,根据s2的类型,然后吐出不同的类型。
4、使用boost库中的lexical_cast

1  int aa = 30;
2 string s = boost::lexical_cast<string>(aa);
3 cout<<s<<endl; // 30

3和4只能转化为10进制的字符串,不能转化为其它进制的字符串。

5 c++11新增  to_string

函数原型:
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);

功能:

将数值转化为字符串。返回对应的字符串。

例子:

#include <iostream>
#include <string>
using namespace std; int main()
{
string pi = "pi is " + std::to_string(3.1415926);
string perfect = to_string(1 + 2 + 4 + 7 + 14) + " is a perfect number";
cout << pi << '\n';
cout << perfect << '\n';
system("pause");
return 0;
}

string转化为int
1、使用strtol(string to long)

1 string s = "17";
2 char* end;
3 int i = static_cast<int>(strtol(s.c_str(),&end,16));
4 cout<<i<<endl; // 23
5
6 i = static_cast<int>(strtol(s.c_str(),&end,10));
7 cout<<i<<endl; // 17

2、使用sscanf

1 int i;
2 sscanf("17","%D",&i);
3 cout<<i<<endl; // 17
4
5 sscanf("17","%X",&i);
6 cout<<i<<endl; // 23
7
8 sscanf("0X17","%X",&i);
9 cout<<i<<endl; // 23

3、使用stringstream

1  string s = "17";
2
3 stringstream ss;
4 ss<<s;
5
6 int i;
7 ss>>i;
8 cout<<i<<endl; // 17

注:stringstream可以吞下任何类型,根据实际需要吐出不同的类型。

4、c++11 使用stoi()

5、使用boost库中的lexical_cast

1  string s = "17";
2 int i = boost::lexical_cast<int>(s);
3 cout<<i<<endl; // 17

C++ int与string的互转的更多相关文章

  1. JAVA中int转string及String.valueOf()的使用

    日常java开放中,经常会遇到int和String的互转,一般图省事的做法就是: String length = ""+100; length的生成需要使用两个临时字符串" ...

  2. Java string和各种格式互转 string转int int转string

    Java string和各种格式互转 string转int int转string 简单收集记录下 其他类型转String String s = String.valueOf( value); // 其 ...

  3. java日期int和String互转

    /** * 时间unix转换 * @param timestampString * @return */ public static String TimeStampDate(String times ...

  4. 【C++】int与string互转

    int转string(注:itoa不是标准函数,OJ平台可能不接受) ; ]; string str; sprintf(temp, "%d", n); str = temp; or ...

  5. C# enum、int、string三种类型互相转换

    enum.int.string三种类型之间的互转 #代码: public enum Sex { Man=, Woman= } public static void enumConvert() { in ...

  6. int and string

    int转string一.#include <sstream> int n = 0; std::stringstream ss; std::string str; ss<<n; ...

  7. JAVA中int、String的类型转换

    int -> String int i=12345;String s="";第一种方法:s=i+"";第二种方法:s=String.valueOf(i); ...

  8. C++ int与string的转化

    int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释.缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释.8进制 ...

  9. [C#]List<int>转string[],string[]转为string

    // List<int>转string[] public string[] ListInt2StringArray(List<int> input) { return Arra ...

随机推荐

  1. .net面试问题总结

    原文://http://blog.csdn.net/wenyan07/article/details/41541489 用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要 ...

  2. springboot整合rabbitMQ时遇到的消息无法入列问题

    问题描述: 对列和交换器配置如下(绑定的正常交换器的key是“convert”): 管理平台上手动发是可以的: 而通过程序发消息不行,根本没有进入队列: 解决:显式指定交换器(备选交换器和死信交换器都 ...

  3. gethostname gethostbyname gethostbyaddr 获得主机相关信息

    网络编程里经常需要获得主机的相关信息,下面围绕相关的函数以及用到的结构来说明. 获得主机名:int gethostname( char FAR *name, //[out] Pointer to a ...

  4. hdu1693 Eat the Trees [插头DP经典例题]

    想当初,我听见大佬们谈起插头DP时,觉得插头DP是个神仙的东西. 某大佬:"考场见到插头DP,直接弃疗." 现在,我终于懂了他们为什么这么说了. 因为-- 插头DP很毒瘤! 为什么 ...

  5. 【codeforces 507E】Breaking Good

    [题目链接]:https://vjudge.net/contest/164884#problem/D [题意] 给你一张图; 图中有些路是完好的;但有些路还没修好; 先不管路有没有修好; 问你从起点到 ...

  6. 微信小程序多商品评价评星提交

    <form bindsubmit="submitComment"> <block wx:for="{{commentList}}" wx:ke ...

  7. CentOS 6.5 使用Apache的VirtualHost映射SVN端口

    vi /etc/httpd/conf.d/subversion #修改Apache的SVN配置,如果没有配置过则略过 #<Location /svn> # DAV svn # SVNPar ...

  8. 桥接模式(Bridge、Implementor)(具体不同平台日志记录,抽象与实现分离)

    桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式 ...

  9. 【转载】TSN简介及相关资源

    原文:https://blog.csdn.net/u012692537/article/details/86188392 一.简介 1.1 什么是TSN TSN(Time Sensitive Netw ...

  10. textarea高度自动增高

    <!--随着textarea 输入内容 自动增加高度--> <script type="text/javascript"> $(".input_t ...