c++数据格式化输出/字符串复制/字符串比较
1、将数据格式化输出到字符串.
(1)函数1 int sprintf_s(char *restrict buffer, rsize_t bufsz, const char *restrict format, ...);
(2)函数2:int sprintf( char *buffer, const char *format, [ argument] … );
buffer:待存入字符串,bufsz:待写入缓冲区大小
format:待存入格式,%[指定参数$][标识符][宽度][.精度]指示符
[argument]...:可选参数,可以是任何类型的数据。
%c | 整数转成对应的 ASCII 字元 |
%d | 整数转成十进位。 |
%f | 把精确度数字转成浮点数 |
%o | 整数转成八进位。(字母o) |
%s | 整数转成字串。 |
%x | 整数转成小写十六进位 |
%X | 整数转成大写十六进位。 |
sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险。
直接上代码:
#include <iostream>
using namespace std;
int main()
{char ch[20] = { 0 };int nValue = 812446;sprintf_s(ch, sizeof(ch)-1, "%X", nValue); //sizeof(ch)-1的大小必须大于等于待写入字符串的大小,否则会出错。float fValue = 0.35456;char ch1[20] = { 0 };sprintf_s(ch1,"%.3f",fValue);//可以不用指定return 0;
}
他们之间的区别可参考:
sprintf_s、_snprintf与_snprintf_s_程序猿的专栏-CSDN博客
https://blog.csdn.net/lanzhihui_10086/article/details/44221935?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control
可以使用_snprintf_s函数,它比sprintf_s安全
//如下的数组赋值就不会发生溢出。
char ch[8] = { 0 };
float fValue = 0.35456;
int nValue = 87654321;
_snprintf_s(ch, sizeof(ch)-1, "%d", nValue);
2、字符串复制函数:strncpy_s()、strncpy()。
(1)语法形式为:char *strncpy_s(char *dest, const char *src, int n).
表示把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回被复制后的dest。
(2)语法形式为:strncpy_s(char * restrict dest,rsize_t destsz,
const char * restrict src,rsize_t count);
这里多了一个长度,就是destsz,目标缓冲区的大小
直接上代码
#include <iostream>
struct stuVar1 {char cName[30];char cNumber[12];
};
struct stuVar2 {int nCount;char cSubJectName[50];stuVar1 stu;
};struct stuVar3 {int nCount;char cSubJectName[50];char cName[30];char cNumber[12];
};void function1(stuVar2* stuSrc, stuVar3* stuDest) {strncpy_s(stuDest->cName, stuSrc->stu.cName,29); strncpy_s(stuDest->cNumber, stuSrc->stu.cNumber, 11);strncpy_s(stuDest->cSubJectName, stuSrc->cSubJectName,49);stuDest->nCount = stuSrc->nCount;
}
int main()
{std::cout << "Hello World!\n";stuVar1 stu1 = {sizeof(stuVar1),0}; //结构体初始化 const char* pName = "XiaoWang";strncpy_s(stu1.cName, pName, sizeof(stu1.cName)-1);const char* pNumber = "13235678967";strncpy_s(stu1.cNumber, pNumber, sizeof(stu1.cNumber) - 1);char dst1[6], src1[100] = "hello";strncpy_s(dst1, 6, src1, 100);stuVar2 stu2 = { sizeof(stuVar2),0 };stu2.nCount = 2;const char* pSubject = "Physical";strncpy_s(stu2.cSubJectName, pSubject, sizeof(stu2.cSubJectName) - 1);stu2.stu = stu1;stuVar3 stu3 = {sizeof(stuVar3),0};function1(&stu2, &stu3);}
strncpy_s()函数比strncpy()函数安全,他们之间的区别如下:
strncpy_s_字符串 | Strings_C_参考手册_非常教程
3、字符串比较函数:
(1)char*字符串比较:int strcmp( const char *string1, const char *string2 )
(2)wchar_t字符串比较:int wcscmp( const wchar_t *string1, const wchar_t *string2 );
string1, string2 为以零值结尾的字符串所有版本的c运行库都支持
返回值
< 0 |
string1 小于string2 |
0 |
string1与string2相等 |
> 0 |
string1 大于 string2 wcscmp 比较宽字符 |
4、C++中宏定义字符、参数替换:
[C++] C++中的宏定义详解 - zhizhiyu - 博客园
宏中#、##、__VA_ARGS__和##__VA_ARGS__的作用:
https://blog.csdn.net/q2519008/article/details/80934815?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.control
5、char字符串的分割:
strtok(), strtok_s() 字符串分割函数 - czhoud - 博客园
C++ 分割字符串两种方法 - 盛开的石头 - 博客园
c++数据格式化输出/字符串复制/字符串比较相关推荐
- day02 格式化输出 运算符 编码 字符串 列表 元组 字典 set集合 深浅拷贝
day02学习大纲 一. 格式化输出: %s 占位字符串 %d 占位数字 "xxx%sx %sxx" % (变量, 变量) 二. 运算符: a+=b a = a + b and 并 ...
- pytho格式化输出整数小数字符串
python print格式化输出. 打印字符串 print("His name is %s,Hello"%("Aviad")) print("His ...
- python之json数据格式化输出方法
问题:json格式数据直接print打印无格式,在数据量较多时,不便于人眼高效找到数据 预期:json数据格式化输出,一行一个key.value 解决:使用json模块dumps函数的参数indent ...
- 格式化输出,运算符,编码,字符串(索引,切片,大小写转换等等)
格式化输出%s和format{} , 运算符 , 编码 , 字符串(索引,切片,大小写转换,拉长字符,去空格,替换,切割,格式化输出format , count数数 , find查找 , index求 ...
- php JSON数据格式化输出方法
php 的json_encode能把数组转换为json格式的字符串.字符串没有缩进,中文会转为unicode编码,例如\u975a\u4ed4.人阅读比较困难.现在这个方法在json_encode的基 ...
- 用C语言解“混合类型数据格式化输出”题
7-6 混合类型数据格式化输入 本题要求编写程序,顺序读入浮点数1.整数.字符.浮点数2,再按照字符.整数.浮点数1.浮点数2的顺序输出. 输入格式: 输入在一行中顺序给出浮点数1.整数.字符.浮点数 ...
- 在JAVA中把JSON数据格式化输出到控制台
package com.test.jsonUtility; /** * @author * @date 创建时间:2017年10月17日 上午11:11:42 * @version ...
- python json.dumps()函数输出json格式,使用indent参数对json数据格式化输出
最近使用json.dumps()来输出json数据,发现输出的数据是一行,看着太别扭了,不美观.发现可以使用indent参数来控制 import jsondicts={"name" ...
- C++64位数据格式化输出
关于printf函数输出64位数的问题,其实在window下和linux下是不一样的: linux下是 printf("%lld/n",a); printf("%llu/ ...
- python123格式化输出_python 字符串格式化输出 %d,%s及 format函数
旧式格式化方式:%s,%d 1.顺序填入格式化内容 s = "hello %s, hello %d"%("world", 100) print(s) 结果: ' ...
最新文章
- 实测DB_BLOCK_CHECKSUM=FULL的作用
- python如何创建excel文件_Python xlrd/xlwt 创建excel文件及常用操作
- 信息学奥赛C++语言:数一数
- Android屏幕适配的两种方式
- django 1.8 官方文档翻译: 2-4-4 编写迁移
- 剑指offer之二叉搜索树的第K个结点
- 求数组中最长连续递增子序列
- 城市轨道交通运营票务管理论文_城市轨道交通运营管理浅析
- 一篇Word论文的字体格式是什么?
- 奔驰北京工厂两年内将再投产三款电动车;希尔顿中国市场第300家酒店开业 | 美通企业日报...
- C++-导出类-导出宏-纯虚函数-DllMain函数-调用约定与参数命名
- 小程序实现单词查询搜索及搜索的历史记录
- python读取手机通讯录_python爬取通讯录
- 一些情况及问题的说明
- 牛顿法求临界水深c语言程序,基于牛顿迭代法的圆形断面临界水深直接计算法邹武停.pdf...
- 搭建我的云端服务器环境
- Typecho炫彩鼠标插件:HoerMouse
- 用matlabd批量处理图片
- html5在微信浏览器下调用复制功能
- 【vscode 插件】为 markdown 文章标题自动添加多级序号
热门文章
- el-table的使用总结
- Linux的运行级别/模式
- python脚本调度程序_python任务调度实例分析
- mate10鸿蒙测试版,华为鸿蒙 2.0 开发者公测版 Bata 3 更新:增加三个鸿蒙应用
- python perl 正则_为什么说perl的正则表达式功能比Python强大
- vm虚拟机修改物理时间_GPU虚拟机创建时间深度优化
- python3下载url图片假死_利用Python 向FTP 上传图片,程序假死?
- 图片渲染延迟_Qt入门DirectX11学习之旅(六)DirectX11 GBuffer Deffered延迟渲染
- python标准库os中的方法startfile_如何使用Python 打开exel等各种文件或者应用,就用:os.startfile...
- kafka与mysql持久化_漫游Kafka设计篇之数据持久化