随笔分类 -  C/C++语言基础

c++与c
摘要:const char* c_str ( ) const; Get C string equivalent Generates a null-terminated sequence of characters (c-string) with the same content as the string 阅读全文

posted @ 2020-08-05 22:48 wsw_seu 阅读(216) 评论(0) 推荐(0)

C/C++中内存对齐问题的一些理解(转)
摘要:内存对齐指令 一般来说,内存对齐过程对coding者来说是透明的,是由编译器控制完成的 如对内存对齐有明确要求,可用#pragma pack(n)指定,以n和结构体中最长数据成员长度中较小者为有效值 如未明确指定时,以结构体中最长的数据成员长度作为内存对齐的有效值 以下如没有特殊说明,均视为情况3( 阅读全文

posted @ 2020-07-25 17:07 wsw_seu 阅读(179) 评论(0) 推荐(0)

利用c++ std::getline实现split
摘要:getline reads characters from an input stream and places them into a string: getline从输入流中读取字符, 并把它们转换成字符串. getline(input, str, delim), 默认的分隔符是’\n’字符. 阅读全文

posted @ 2020-07-25 16:29 wsw_seu 阅读(1211) 评论(0) 推荐(0)

ostringstream、istringstream、stringstream(转)
摘要:看一下C++风格的串流控制,C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstream类用于执行C++风格的串流的输入操作。 stringstream类同时可以支持C++风格 阅读全文

posted @ 2020-07-25 16:28 wsw_seu 阅读(617) 评论(0) 推荐(0)

C++ Split string into vector<string> by space(转)
摘要:c++中没有这么方便的实现,但也有很多的方法能实现这个功能,下面列出五种常用的实现的方法,请根据需要选择,个人觉得前三种使用起来比较方便,参见代码如下: #include <vector> #include <iostream> #include <string> #include <sstream 阅读全文

posted @ 2020-07-25 16:07 wsw_seu 阅读(245) 评论(0) 推荐(0)

c++ 11字符串与string转换常用函数
摘要:这里主要介绍一下string to int 其他方法与这个类似,可到头文件 <string> 中查看 @_Str 转换的字符串 @_Idx 转换的长度(位数) @_Base 进制 double stod(const string& _Str, size_t *_Idx = nullptr); flo 阅读全文

posted @ 2020-07-25 16:03 wsw_seu 阅读(804) 评论(0) 推荐(0)

#paragma详解
摘要:#Pragma是预处理指令,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#Pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pr 阅读全文

posted @ 2019-03-22 20:06 wsw_seu 阅读(543) 评论(0) 推荐(0)

深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别(转)
摘要:C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。 1 数组的本质 数组是多个元素的集合,在内存中分布在 阅读全文

posted @ 2019-03-19 10:17 wsw_seu 阅读(482) 评论(0) 推荐(0)

c++中的几种函数调用约定(转)
摘要:C++中的函数调用约定(调用惯例)主要针对三个问题: 1、参数传递的方式(是否采用寄存器传递参数、采用哪个寄存器传递参数、参数压桟的顺序等); 参数的传递方式,最常见的是通过栈传递。函数的调用方将参数压入栈中,函数自己再从栈中将参数取出。 对于有多个参数的函数,调用惯例要规定函数调用方将参数压栈的顺 阅读全文

posted @ 2019-03-16 19:54 wsw_seu 阅读(1614) 评论(0) 推荐(0)

判断机器是big-endian、little-endian
摘要:联合体union和大小端(big-endian、little-endian):下边示范了一种用途,代表四个含义的四个变量,但是可以用一个int来操作,直接int赋值,无论内存访问(指针大小的整数倍,访问才有效率),还是时间复杂度(一次和四次的区别,而且这四次有三次都是不整齐的地址),都会低一些。 1 #include 2 union var{ 3 char c[4];... 阅读全文

posted @ 2018-04-25 18:59 wsw_seu 阅读(241) 评论(0) 推荐(0)

static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
摘要:static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答:1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方 阅读全文

posted @ 2018-03-18 16:54 wsw_seu 阅读(234) 评论(0) 推荐(0)

new与malloc的10点区别(转)
摘要:1. 申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存, 阅读全文

posted @ 2018-03-06 11:09 wsw_seu 阅读(152) 评论(0) 推荐(0)

借助boost bind/function来实现基于对象编程。
摘要:boost bind/function库的使用: 替换了stl中mem_fun,bind1st,bin2nd等函数。用户注册回调函数需要利用boost/bind转化成库中boost/function格式的函数。然后调用库的时候就可以回调用户注册的处理函数了。bind也可以将成员函数转换成boost/ 阅读全文

posted @ 2018-02-26 17:16 wsw_seu 阅读(207) 评论(0) 推荐(0)

malloc/free与new/delete的区别(转)
摘要:相同点:都可用于申请动态内存和释放内存 不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动 阅读全文

posted @ 2018-01-20 10:09 wsw_seu 阅读(117) 评论(0) 推荐(0)

字符串类的实现
摘要:#pragma once #include using namespace std; class String { public: String(const char* str = ""); String(const String& other); String& operator=(const String& other); String& operator=(... 阅读全文

posted @ 2018-01-15 09:35 wsw_seu 阅读(906) 评论(0) 推荐(0)

C++this指针
摘要:一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。 主要作用 主要作用 一个对象的this指针并不是对象本身的一部分,不会影响sizeo 阅读全文

posted @ 2018-01-13 14:27 wsw_seu 阅读(176) 评论(0) 推荐(0)

函数压栈的过程(转 知乎)
摘要:例如:void func_A(arg_A1, arg_A2);void func_B(arg_B1, arg_B2);int main(int argc, char *argv[], char **envp){func_A(arg_A1, arg_A2);}void func_A(arg_A1, a 阅读全文

posted @ 2018-01-13 10:46 wsw_seu 阅读(5987) 评论(0) 推荐(0)

const常量与define宏定义的区别(转)
摘要:#define RADIUS 100; const float RADIUS = 100; (1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。 (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类 阅读全文

posted @ 2018-01-08 15:44 wsw_seu 阅读(202) 评论(0) 推荐(0)

C++如何实现多态
摘要:1. 什么是多态多态是C++中的一个重要的基础,面向对象编程语言中,接口的多种不同的实现方式即为多态。2. 多态带来的好处多态带来两个明显的好处:一是不用记大量的函数名了,二是它会依据调用时的上下文来确定实现。确定实现的过程由C++本身完成另外还有一个不明显但却很重要的好处是:带来了面向对象的编程。 阅读全文

posted @ 2018-01-08 15:28 wsw_seu 阅读(3420) 评论(0) 推荐(0)

指针与引用的区别
摘要:指针是一块内存的地址值,而引用是一块内存的别名。 从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。 而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用 阅读全文

posted @ 2018-01-08 14:58 wsw_seu 阅读(157) 评论(0) 推荐(0)

导航