【学习笔记】C++下字符串与数字的拼接-创新互联
目录
网站标题:【学习笔记】C++下字符串与数字的拼接-创新互联
转载注明:http://cdiso.cn/article/csphso.html
- 环境
- sprintf
- to_string()
- itoa
OS:win 10
IDE:Visual Studio 2017
- 描述:
sprintf
是一种 C 风格的字符串与数字拼接的方式,因为在 C 中没有 string 这种数据类型,所以它是将 char 类型的数据和数字类型(int, long, float 等)拼接 - 函数原型:
int sprintf(char *buffer,const char *format [,argument] ...);
- 函数定义:
sprintf
代表 “string printf”。它将输出数据存储在buffer
中 - 返回值:如果成功则返回写入缓冲区的字符数量,如果出现错误返回 -1
- 示例
#includevoid ExampleSprintf()
{int a = 1, b = 2;
float c = 5.5;
char srcBuf[7] = "noname";
char destBuf[15] = {0 }; // 初始化为 0 字符
int res = sprintf(destBuf, "%d%s%d%.1f", a, srcBuf, b, c); // .1f 表示仅输出小数点后 1 位
std::cout<< destBuf<< std::endl; // 1noname25.5
std::cout<< "res: "<< res<< std::endl; // 11
}
【注】char
类型的指针和数组都可以
- 描述:在 C++11 后,string 类型的字符串之间可以直接通过 “+” 拼接,于是我么可以通过
to_string()
将数字转换成 string 类型,再进行拼接 - 函数原型:
string to_string ( xxx val);
其中 xxx 可以是诸如int
,long
,long long
,float
,double
等这一类型 - 函数定义:将数字转换成 string 类型
- 返回值:返回转换后的字符串
- 示例
#include#includevoid ExampleTo_String()
{int a = 1, b = 2;
float c = 5.5;
std::string srcString = "noname";
std::string destString;
destString = std::to_string(a) + srcString + std::to_string(b) + std::to_string(c);
std::cout<< destString<< std::endl; // 1noname25.500000
}
【注】要使用 string 和to_string()
需要引入头文件
【注】to_string()
不支持格式化浮点类型的数据,但你可以通过其它方式截断小数点后的内容
- 描述:itoa 即 convert int to a string,将整型转换成 string 类型
- 函数原型:
char * itoa ( int value, char * str, int base );
在这里 value 表示要转换的 int 的值,str 表示最终转换成的字符串,base 表示进制,一般而言当传入 base 为 10 时,表示基于 10 进制转换 - 函数定义:注意 itoa 并不是 C++ 的一部分,只是一些编译器支持它,在该场景下,最好使用 sprintf 来替代它
- 返回值:指向 str 的指针,和参数 str 一样
- 示例
void Exampleitoa()
{int i = -1;
char buffer[30];
_itoa(i, buffer, 10);
std::cout<< buffer<< std::endl; // -1
// 此处已经是字符串形式的 -1 了
}
【注】当 base 为 10 的时候,且当 value 为负数,那么转换后的字符串结果会自动加上一个负号(-),而其他进制的时候,value 会被视为无符号
【注】str 这个参数必须要足够容纳转换后的字符串大小
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站标题:【学习笔记】C++下字符串与数字的拼接-创新互联
转载注明:http://cdiso.cn/article/csphso.html