C++语言
文章平均质量分 66
焱齿
tencent
展开
-
C++字符串拼接效率比较(+=、append、stringstream、spintf)
事情起因很简单,自己的代码中使用了stringstream对象进行字符串的拼接,然后被老同事质疑效率低下。借着这个机会了解下为什么?一、+=、append、stringsteam、sprintf四种字符串拼接方法比较C/C++中字符串拼接的使用场景非常多,字符串拼接的方法也非常多,这里简单的比对下上述四种方法的效率。测试方法:分别哟经+=、append、stringstream、sprintf的方式来拼接字符串。s1=“aaaaa”,s2=“bbbbb”,s3=“ccccc”。内层循环将这三个字原创 2021-06-23 15:51:55 · 9288 阅读 · 3 评论 -
c++进制转换
其实主要就是sprintf()函数。仔细看看这个函数的用法就好了。#include<iostream>#include<algorithm>using namespace std;int main(){ char str[100] = {0}; int num = 432; sprintf(str,"%04X",num); //%04X代表不足4位前面补零直至4位,例432的十六进制是1B0,输出则为01B0 cout << str <.原创 2021-04-18 17:03:41 · 207 阅读 · 0 评论 -
C++常用基础函数整理
函数定义如下,这里用到了模板。template <class FromType, class ToType>inline ToType To(const FromType& from, const ToType& init_to_value){ ToType to = init_to_value; std::stringstream ss; ss << from; ss >> to; return to;...原创 2021-02-03 20:41:29 · 286 阅读 · 0 评论 -
boost::program_options 用法详解
boost::program_options 用法详解简介program options是一系列pair<name,value>组成的选项列表,它允许程序通过命令行或配置文件来读取这些参数选项.主要组件program_options的使用主要通过下面三个组件完成:组件名 作用 options_description(选项描述器) 描述当前的程序定义了哪些选项 parse_command_line(选项分析器) 解析由命令行输入的参数 va.转载 2020-07-19 13:03:10 · 4269 阅读 · 1 评论 -
Linux命令行解析参数之getopt_long
一、关于命令行参数 Linux的命令行参数可以分为两类,一类是短选项,一类是长选项。短选项在参数前加一杠"-",长选项在参数前连续加两杠"--",如下表(ls 命令参数)所示,其中-a,-A,-b都表示短选项,--all,--almost-all, --author都表示长选项。他们两者后面都可选择性添加额外参数。比如--block-size=SIZE,SIZE便是额外的参数。...原创 2020-03-15 17:40:08 · 1257 阅读 · 0 评论 -
关于map的几种非常规排序
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义,map<string, int>,其中学生姓名用string类型,作为Key;该学生的成绩用int类型,作为value。这样一来,我们可...原创 2018-12-22 14:15:51 · 410 阅读 · 0 评论 -
关于vector的两个问题(reserve方法&修整过剩空间)
关于vector的问题其实还是很多的。例如初始化、遍历、查找(find函数)、删除(erase和pop_back)、增加(insert和push_back)、清空(clear)、判空(empty)、大小(size)、容量(capacity)在这里就不说了。这次主要说两个问题:vector的内存分配(reserve)和使用“交换技巧”来修正vector过剩的空间/内存。0、关于vector再多说.........原创 2018-12-21 22:14:05 · 2668 阅读 · 0 评论 -
如何在linux中也能够使用自动类型推导关键字auto?
其实这个问题不应该这样问。是编译器支持auto关键字的而不是linux系统(此处意为直接支持)。所以你应该问如何让自己的g++编译器支持C++11标准。这样的话问题就很简单了。//第一种,直接包含在源程序文件中,如第一行代码所示#pragma GCC diagnostic error "-std=c++11"#include <iostream>using namesp...原创 2018-12-20 23:02:18 · 535 阅读 · 0 评论 -
typedef struct引起的结构体问题
原来一直认为结构体定义只有struct开头的方法。今天看一本书突然看到typedef struct开头的结构体定义方式吧自己搞的一脸懵逼。既然如此那就看看吧!!先来看看C语言中的结构体变量的三种方法:1、先定义结构体类型,再定义变量注:注意在C语言中定义结构体变量的时候是struct student打头的。struct student{ int num; cha...原创 2018-12-20 22:22:29 · 412 阅读 · 0 评论 -
C++字符串与C字符串的相互转换问题
第一部分:将 char * 或者 char [] 转换为 string——直接赋值即可转换。第二部分:将string转换为char * 或者char [] 。string 是c++标准库里面其中一个,封装了对字符串的操作 把string转换为char* 有 3种方法:data()/c_str()/copy(). 1. 调用 string的data()函数(1)以...原创 2018-12-20 18:45:06 · 1013 阅读 · 0 评论 -
空类型(void *)的简单理解
(void *)是一个指针类型,又名空指针/空类型指针/无类型指针。既然是指针那么它就是一个存地址的变量!32位系统下sizeof(ptr)就是4字节,64位系统下sizeof(ptr)就是8字节(注:这个ptr可以使各种类型的指针,均是如此)。因此判断一个系统位数的最科学方法就是sizeof(ptr)。见程序1。C中规定void类型的指针可以强制转化为任意的其他类型指针使用。原因其实就是前面...原创 2018-12-08 22:31:18 · 7685 阅读 · 2 评论 -
do...while(); 语句在宏定义中的应用。
首先声明一下do...while语句的原型:(注意最后位置需要一个分号,这个特性带来一些好处)do{ /*循环体*/}while(condition);如果你是C++程序员,我有理由相信你用过,或者接触过,至少听说过MFC, 在MFC的afx.h文件里面, 你会发现很多宏定义都是用了do…while(0)或do…while(false), 比如说:#define AFXASS...原创 2018-12-18 17:29:17 · 744 阅读 · 0 评论 -
输入输出运算符的重载
运算符重载相信大家都不陌生。运算符函数通常分为两种形式:一类是在类中定义的运算符成员函数,称之为类成员运算符;另一种在类之外定义的运算符重载,通常以该类的友元形式,称之为友元运算符。1、重载输入输出运算符的形式。常见的形式如下:类型中声明友元函数(友元函数必须在类中声明)class Complex{ public: Complex( double r=0,...原创 2018-12-20 18:01:05 · 11121 阅读 · 0 评论