char函数

标准C++中的string类的用法总结

心不动则不痛 提交于 2020-03-15 22:02:30
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果 离开了MFC框架,还有没有这样使用起来非常方便的类呢?是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操 作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的string类得功能也是非常强大 的,一般都能满足我们开发项目时使用。现将具体用法的一部分罗列如下,只起一个抛砖引玉的作用吧,好了,废话少说,直接进入正题吧! 要想使用标准C++中string类,必须要包含 #include // 注意是,不是,带.h的是C语言中的头文件 using std::string; using std::wstring; 或 using namespace std; 下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。 string和wstring的用法是一样的,以下只用string作介绍: string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造函数和复制构造函数,如string s1

嵌入式开发之C基础学习笔记06--数组和指针(非常重要,难点)

非 Y 不嫁゛ 提交于 2020-03-15 21:50:14
C语言进阶学习 数组 1)数组的使用 2)字符串(String):数组(尤其是一维数组)最常用的地方——————>C语言中字符串就是一维数组 数组: 定义:具有相同类型的数据的有序集合,并用唯一的名字来标识。 1)数组必须直接声明,编译器在编译阶段为其分配内存空间 2)C89数组必须是定长的,数组的大小在编译时是固定的;C99允许使用变长数组,数组的大小在运行时确定 void f(int longeur,int wide) { int matrix[longeur][wide];/*定义一个矩阵*/ /*数组的长度由两个参数决定*/ } 3)数组的所有元素占连续的内存空间,在内存中是线性(顺序)存放的,保存数组所需要的内存空间直接与基本类型和数组长度有关。 数组占用的内存空间 = sizeof(基类型)*数组长度 4)C不检查数组是否越界,程序可以在两边越界。程序员应自己加入越界检查。数组可以越界使用,但是初始化时不允许! 5)向函数传递数组: 定义数组形参的方法有三种:指针,定长数组,无尺寸数组 void func1(int *a){...} void func2(int a[10]){...} void func3(int a[]){...} 在函数的形参的声明中,数组尺寸无所谓,因为C语言没有边界检查 实际上,第二种方法在编译后,编译器产生的代码就是让函数接受指针

读入优化

断了今生、忘了曾经 提交于 2020-03-15 19:43:50
对于输入数据非常大的一些可(变)爱(态)题目,scanf就会大大拖慢程序的运行速度,cin就更不用说了,所以我们要用一种高大上的东西——读入优化。 读入优化的原理其实就是一个一个字符的读入,再组成数字 ================================================================== 下面贴一段读入优化的模板 int read() { int x=0,f=1; char ch; while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return f*x; } ==========================前方高能预警=============================== 下面是dalao的读入优化模板 template<class T>void read(T &x) { x=0;int f=0;char ch=getchar(); while(ch<'0'||ch>'9') {f|=(ch=='-');ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();} x=f

【FBI WARNING】读入优化

安稳与你 提交于 2020-03-15 19:40:19
感觉这个优化挺重要的,毕竟在2017NOIP提高的那个奶酪问题 写出代码来 就只是读入感觉就超时 过了样例又如何? 最后还不是TLE。 对于输入数据非常大的一些可(变)爱(态)题目,scanf就会大大拖慢程序的运行速度,cin就更不用说了,所以我们要用一种高大上的东西——读入优化。 读入优化的原理其实就是一个一个字符的读入,再组成数字 ---Peper(我百度找的) 插入一套比较简单的读入优化 当然 对于我来说还是比较简(困)单(难)的。 1 int read() 2 { 3 int x=0,f=1; 4 char ch; 5 while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();} 6 while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} 7 return f*x; 8 } 这就是 最基本 的读入优化,通过getchar函数依次读入字符,用x记录答案,用f判断正负。 ps:在主程序中调用时int n=read();即可 ===========================前方高能预警=============================== 在插一套某大佬的版子 template<class T>void read(T &x) { x=0;int f=0;char ch

C语言字符串

本秂侑毒 提交于 2020-03-15 18:00:54
目录 一、字符串的概念 二、占用内存的情况 三、字符串的初始化 四、字符串与指针 五、字符串的结尾标志 六、字符串的输出 七、字符串越界 八、字符串常用的库函数 1、获取字符串的长度(strlen) 2、字符串复制或赋值(strcpy) 3、字符串复制或赋值(strncpy) 4、字符串拼接(strcat) 5、字符串拼接(strncat) 6、字符串比较(strcmp、strncmp) 7、字符查找(strchr、strrchr) 8、字符串查找(strstr) 九、应用经验 1、留有余地 2、变量初始化 3、位置(地址)偏移的用法 4、不要在子函数中对字符指针用sizeof 十、课后作业 十一、版权声明 在很多教程中,字符串不过是一个以0结束的字符数组,但是,在我看来,字符串虽然不是C语言基本数据类型,但它比任何数据类型都重要,因为字符串是最常用的数据。 一、字符串的概念 我们可以把字符串储存在char类型的数组中,如果char类型的数组末尾包含一个表示字符串末尾的空字符\0,则该数组中的内容就构成了一个字符串。 因为字符串需要用\0结尾,所以在定义字符串的时候,字符数组的长度要预留多一个字节用来存放\0,\0就是数字0。这是约定。 char strname[21]; // 定义一个最多存放20个英文字符或十个中文的字符串 字符串也可以存放中文和全角的标点符号

mtk平台hw_get_module分析

人盡茶涼 提交于 2020-03-15 17:11:35
google为了保护硬件厂商的信息,在android中添加了一层HAL层。查看HAL的编写方法的过程中,发现整个模块没有一个入口。一般应用程序有main函数,可以让加载器进行加载执行,而对于动态链接库,我们可以对库中导出的任何符号进行调用。 android中的HAL需要上层的函数对其进行加载调用,android的HAL加载器是如何实现对不同的Hardware Module进行通用性的调用的呢? 查看源码的过程中发现android中实现调用HAL是通过hw_get_module实现的。 int hw_get_module(const char *id, const struct hw_module_t **module) { return hw_get_module_by_class(id, NULL, module); } 这是其函数原型,id会指定Hardware的id,这是一个字符串,比如我们比较熟悉的sensor的id是#define SENSORS_HARDWARE_MODULE_ID "sensors",如果找到了对应的hw_module_t结构体,会将其指针放入*module中。看看它的实现。 int hw_get_module_by_class(const char *class_id, const char *inst, const struct hw_module

Java常量与变量

China☆狼群 提交于 2020-03-15 06:51:09
1.标识符 在Java中,变量、常量、函数、类都可以称为程序实体,而他们的名称统称为标识符。 (1)标识符的命名规则 标识符可以由字母、数字、下划线(_)和$组成,不能以数字开头。 标识符严格区分大小写。 标识符不能是Java关键字和保留字。 标识符的命名最好能反映出其作用。 需要说明的是,以下划线(_)开头是合法的,但是在Go语言中不合法。 python语法中也是合法的,只不过表示私有变量。 2.关键字 关键字是被编程语言保留的字符序列,编程人员不能将其当作标识符,因此关键字也被称为保留字。 java中的关键字: Java总共有50多个关键字,还有几个保留字,比如goto。 3.变量 在数学概念中,变量表示没有固定值且可以改变的数。 从计算机系统的角度来看,变量是一段或多段用来存储数据的内存。 变量的三个元素:变量类型、变量名和变量值。 变量的命名规则:   满足标识符的命名规则。   符合驼峰法命名规范。(变量都以小写字母命令,如果由多个单词组成,除首单词外其余单词第一个字母大写)   变量名的长度没有限制。 变量命名方式: (1)先定义类型,再进行赋值   v_type v_name   v_name = value (2)直接定义变量   v_type v_name = value 4.数据类型 (1)基本数据类型 不同数据类型,占据的内存大小: 不同数据类型的取值方位:

ofstream和ifstream详细用法

狂风中的少年 提交于 2020-03-14 15:42:12
ASCII和二进制文件的输入输出 First : 包含头文件#include <fstream> ASCII输入:   首先要创建一个in-stream对象:ifstream fin("input.txt");    逐词读取: fin>>num>>s;        读取过程中遇到空白符,>>操作符就会停止读取内容,知道遇到另一个>>操作符。    逐行读取: fin.getline(sentence, num);        第一个参数用来接受char数组;第二个参数是在遇到换行符之前,数组允许接受的最大元素数量。 ASCII输出:   首先声明一个ofstream-fout类对象( 打开 文件):ofstream fout("output.txt");    操作举例:     int num = 150;     char name[] = "John Doe";     fout << "Here is a number: " << num << "/n";     fout << "Now here is a string: " << name << "/n";    关闭文件 (自动保存文件),或者回写文件缓冲(保持文件打开的情况下保存文件):     fout << flush; fout.close(); 二进制输入输出:    声明: 不再使用插入(<<

sizeof和strlen小结

瘦欲@ 提交于 2020-03-14 04:16:58
sizeof和strlen小结 写在前面 之所以要总结一下sizeof和strlen的用法和区别,是因为这些知识可以帮助我们更加深入的理解各种数据结构在内存中的占用情况,也许表面上看好像没有多大用处,但有了这种理解,或许会对以后的编码有帮助。 sizeof sizeof是一种操作符,它的作用是返回一个对象或类型名的长度,返回值的类型为size_t,长度的单位是字节。sizeof表达式的结果是 编译时常量 。具体有以下三种用法: sizeof(类型名) sizeof(表达式) sizeof 表达式 使用sizeof操作符时,其结果部分地依赖所涉及的类型: 1、对char类型或值为char类型的表达式做sizeof操作保证得1; 2、对引用类型做sizeof操作将返回存放此引用类型对象所需的内存空间大小; 3、对指针做sizeof操作将返回存放指针所需的内存大小 4、对数组做sizeof操作等效于将其元素做sizeof操作的结果乘上数组元素的个数。 需要注意的是,sizeof不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来! 其返回值类型为size_t,在头文件stddef.h中定义。 sizeof的计算发生在编译时刻,所以它可以被当作常量表达式使用,如: char ary[sizeof(int)*10];//ok sizeof(

笔记strlen() ,sizeof(),strcpy(),strncpy(),strcat()

依然范特西╮ 提交于 2020-03-13 12:47:18
strlen函数的意思是测试字符串的字符长度,不含字符串结束标志的。 int strlen( const char *str) { assert(str != NULL); int len; while((*str++) != '\0') { len++; } return len; } sizeof是运算符,它的结果是字符串在内存中的所占字节大小,它要把\0算进去的。 strcpy函数原型 ( strcpy(s1,s2); strcpy函数的意思是:把字符串s2中的内容copy到s1中,连字符串结束标志也一起copy ) char *strcpy(char *strDest, const char *strSrc)//strDest为目标,strSrc为源 { assert((strDest!=NULL) && (strSrc !=NULL)); //如果两个为空则不用复制,直接中止 char *address = strDest; //用address指向strDest开始地址 while( (*strDest++ = * strSrc++) != ‘\0’ ) //复制,直到源串结束; NULL ; //空操作 return address ; //返回strDest开始地址 } } strncpy函数 : 利用标准库函数strncpy(),可以