C++primer_plus_第五版_学习笔记
auto_ptr浅析(2)——《c++primer plus第五版》学习小结

们引入auto_ptr_ref来实现从右值向左值的转换。其过程为:
1) ap1要通过拷贝 auto_ptr<int>(new int(0))来构造自己
2) auto_ptr<int>(new int(0))作为右值与现有的两个拷贝构造函数参数类型都无法匹配,也无法转换成该种参数类型
从而通过一个间接类成功的实现了拷贝构造右值(临时对象)
同时,这个辅助方法不会使const auto_ptr被拷贝, 原因是在第5步, 此类型转换函数为non-const的,我们知道
,const对象是无法调用non-const成员的, 所以转换失败。
使用注意事项:
(1)两个auto_ptr不要相互赋值,原因上面已经说了,会使右值失去对指针的控制权。
先思考一个问题:
为什么需要auto_ptr,以及为什么这样就可以起到作用?
为什么需要?因为在堆上分配的内存,不像自动变量那样,可以在退出函数的时候自动调用析构函数完成析构,如果代码中
throw一个异常,这个问题就比较麻烦了,可能造成new出来的东西没有delete。
auto_ptr的思想是什么呢?他把指针做成了一个类,进行了封装,这样,无论什么时候,只要退出函数作用域,就会调用对象
很明显,auto_ptr不符合上述条件,而我们知道stl标准容器要用到大量的拷贝赋值操作,并且假设其操作的类型必须符合以
上条件。
辅助函数
1) get用来显式的返回auto_ptr所拥有的对象指针。我们可以发现,标准库提供的auto_ptr既不提供从“裸”指针到
c++ primer 学习笔记4

<<C++Primer PLus 第五版>>读书笔记4(终篇)分类:IT书籍读书笔记2012-08-28 01:39 1916人阅读评论(2) 收藏举报读书c++exceptionstringiostream友元类并非只能拥有友元函数,也可以将类作为友元。
在这种情况下,友元类的所有方法都可以访问原始类的私有成员和保护成员。
另外,也可以做更严格的限制,只将特定的成员函数指定为另一个类的友元。
有一些函数、成员函数或类为友元只能是由类定义,而不能从外部强加友情。
因此,金光友元被授予从外部访问类的私有部分的限制,但他们并不与面向对象的编程思想相悖;相反,他们提高了公有接口的灵活性。
嵌套类在c++中,可以将类声明放在另一个类中。
在另一个类中声明的类被称为嵌套类(nested class),他通过提供新的类型作用域来避免名称混乱。
包含类的成员函数可以创建和使用被嵌套类的对象;而仅当声明位于公有部分,才能在包含类的外面使用嵌套类,而且必须使用作用域解析操作符。
1.嵌套类的访问权限有两种访问权限适合于嵌套类。
首先,嵌套类的声明位置决定了嵌套类的作用域,即他决定了程序的哪些部分可以创建这种类的对象。
其次,和其他类一样,嵌套类的公有部分、保护部分和私有部分控制了对类成员的访问。
在哪些地方可以使用嵌套类以及如何使用嵌套类,取决于作用域和访问控制。
如果嵌套类是在另一个类的私有部分声明的,则只有后者知道他。
派生类不能直接访问基类的私有部分。
如果嵌套类是在另一个类中到的保护部分声明的,则他对于后者来说是课件的,但是对于外部世界则是不可见的。
不过,在这种情况中,派生类将知道嵌套类,并可以直接创建这种类型的对象。
如果嵌套类是在另一个类中的公有部分声明的,则允许后者、后者的派生类以及外部世界使用它,因为他是公有的。
不过,由于嵌套类的作用域为包含它的类,因此在外部世界使用它时,必须使用类限定符。
[cpp]view plaincopyprint?1.// testNestedClass.cpp : 定义控制台应用程序的入口点。
c语言第五版知识点总结大一

c语言第五版知识点总结大一C语言是计算机科学中最基础、最重要的编程语言之一。
对于大一学生来说,学习C语言是进入编程世界的第一步。
掌握C语言的基本知识对于以后的学习和发展都至关重要。
在这篇文章中,我们将总结C语言第五版的一些重要知识点,帮助大一学生更好地掌握这门编程语言。
一、数据类型和变量在C语言中,数据类型和变量是基础中的基础。
我们需要了解的一些数据类型包括整型、浮点型、字符型以及其他派生的数据类型。
在声明变量时,我们需要指定其数据类型,并且要注意变量的命名规则和命名习惯。
二、运算符和表达式C语言中的运算符和表达式是编写程序的基础。
我们需要了解算术运算符、关系运算符、逻辑运算符等各种运算符的使用方法,并且要掌握运算符的优先级和结合性。
三、控制语句控制语句是程序中的流程控制工具。
C语言中的控制语句包括顺序结构、选择结构(if语句、switch语句)和循环结构(while语句、for语句)。
我们需要理解这些语句的用法,并且能够根据实际情况选择合适的控制语句。
四、数组和字符串数组和字符串是C语言中非常常用的数据结构。
我们需要了解数组的定义和使用方法,以及一些常见的数组操作,比如数组的遍历、排序等。
同时,我们还需要了解字符串的概念和处理方法,比如字符串的输入输出、比较、拼接等。
五、函数函数是C语言中的重要概念之一。
我们需要了解函数的定义和调用方法,以及函数的参数传递和返回值。
同时,我们还需要了解一些常见的库函数,比如数学函数、字符处理函数等。
六、指针指针是C语言中的一项重要特性,也是初学者较难理解的部分。
我们需要了解指针的概念和使用方法,掌握指针与数组、字符串、函数之间的关系,并且能够正确地使用指针进行内存管理。
七、结构体和文件操作结构体是C语言中用于表示复杂数据结构的一种方式。
我们需要了解结构体的定义和使用,以及结构体与指针之间的关系。
此外,我们还需要了解文件的打开、读写和关闭等基本操作。
总结起来,C语言第五版中所包括的知识点涵盖了C语言的基础和一些高级特性。
《C++ Primer》5第五部分学习笔记汇总_高级主题(17章至18章)

《C++ Primer》第五部分学习笔记汇总——高级主题《C++ Primer》第17章学习笔记第17章:用于大型程序的工具——异常处理,命名空间,多重继承与虚继承@学习摘录204:概念——大规模编程对程序设计语言的要求往往比小程序员团队更高。
——1. 更严格的正常运转时间以及更健壮的错误检测和错误处理。
——2. 能够用各种库(可能包含独立开发的库)构造程序。
——3. 能够处理更复杂的应用概念。
第一节:异常处理@学习摘录205:异常处理的作用——通过异常我们能够将问题的检测和问题的解决分离,这样程序的问题检测部分可以不必了解如何处理问题。
@学习摘录206:抛出类型的异常——异常是通过抛出(throw)对象而引发(raise)的。
被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那个。
——执行throw的时候,不会执行跟在throw后面的语句,而是将控制从throw转移到匹配的catch.@学习摘录207:被抛出的对象——被抛出的对象将会自动转换为一个指针,不存在数组或函数类型的异常。
——如果抛出一个数组,被抛出的对象转换为指向数组首元素的指针。
——如果抛出一个函数,函数被转换为指向该函数的指针。
@学习摘录208:异常对象——在处理异常的时候,抛出异常的块中的局部存储不存在了。
——因为在处理异常的时候会释放局部存储,所以被抛出的对象就不能再局部存储了,而是用throw表达式初始化一个称为异常对象的特殊对象。
——异常对象将传给对应的catch,并且在完全处理了异常之后撤销。
——当抛出一个表达式的时候,被抛出对象的解态编译时类型将决定异常对象的类型。
@学习摘录209:异常与指针——用抛出表达式抛出静态类型时,比较麻烦的一种情况是,在抛出中对指针解引用。
——抛出指针的时候,必须确定进入处理代码时指针所指向的对象存在。
——如果抛出指向局部对象的指针,而且处理代码在另一函数中,则执行处理代码时指针所指向的对象将不再存在。
C Primer Plus(第五版)学习笔记

C Primer Plus(第五版)学习笔记第一章概览1.1 C语言的起源记住Dennis Ritchie和Ken Thomson。
是在设计UNIX操作系统的时候开发的。
1.2 使用C语言的理由C是一种融合了控制特性的现代语言,而我们已发现在计算机科学的理论和实践中,控制特性是很重要的。
其设计使得用户可以自然地采用自顶向下的规划、结构化的编程,以及模块化的设计。
这种做法使得编写出的程序更可靠、更易懂。
C是一种高效的语言。
C程序往往很紧凑且运行速度快。
C是一种可移植语言。
由于C与UNIX的紧密联系,UNIX系统通常都带有一个C编译器作为程序包的一部分。
Linux中同样也包括一个C 编译器。
C强大而又灵活(计算机世界中经常使用的两个词)。
C面向编程人员的需要。
它允许您访问硬件,并可以操纵内存中的特定位。
它具有丰富的运算符供选择,让您能够简洁地表达自己的意图。
多数C实现都有一个大型的库,其中包含有用的C函数。
这些函数能够处理编程人员通常会面对的许多需求。
C的简洁性与其丰富的运算符相结合,使其可能会编写出极难理解的代码。
没有谁强迫您编写含糊难懂的代码,但存在这样的可能性。
试问,除C之外还有哪种语言存在一年一度的“含糊代码”(ObfuscatedCode)竞赛呢?1.3 C语言的发展方向不管C++和Java这些较新的语言如何流行,C在软件产业仍然是一种重要的技能,在最想获得的技能中,它一般都列在前10名。
特别是在嵌入式系统的编程中,C已开始流行。
也就是说,它将用来为汽车、照相机、DVD播放器和其他现代化设备中逐渐普及的微处理器编程。
同样,C已开始进入长期以来一直属于FORTRAN的科学编程领域。
最后,由于它是一种适合用来开发操作系统的语言,C在Linux的开发中也扮演着重要的角色。
1.4 计算机工作的基本原理CPU的工作非常简单,至少在我们所做的这一简短描述中是这样的。
它从内存中获取一个指令并执行该指令,然后从内存中获取下一个指令并执行。
《C++Primer》第五版习题答案--第一章【学习笔记】

《C++Primer》第五版习题答案--第⼀章【学习笔记】C++Primer第五版习题解答---第⼀章ps:答案是个⼈在学习过程中书写,可能存在错漏之处,仅作参考。
作者:cosefyDate: 2022/1/7第⼀章:开始练习1.3#include<iostream>int main() {std::cout << "hello, world" << std::endl;return 0;}练习1.4:#include<iostream>int main(){int v1 = 0, v2 = 0;std::cout << "please input two numbers: " << std::endl;std::cin >> v1 >> v2;std::cout << "The product of " << v1 << " and " << v2 << " is: " << v1 * v2 << std::endl;return 0;}练习1.5:#include<iostream>int main(){int v1 = 0, v2 = 0;std::cout << "please input two numbers: " << std::endl;std::cin >> v1 >> v2;std::cout << "The product of ";std::cout << v1;std::cout << " and ";std::cout << v2;std::cout << " is: ";std::cout << v1 * v2;std::cout << std::endl;return 0;}练习1.6:结果如下图所⽰,存在报错,显然格式不合法。
(完整版)《C Primer Plus》笔记
#define PI 3.14159
这里如果我们这样定义:
float pi = 3.14159;
#include <stdio.h>
int main(v("enter:\n");
scanf("%d",&a);
printf("%d.\n",a);
return 0;
}
输出结果:
enter:
3
3.
这里并没有输出空格。又比如:
#include <stdio.h>
int main(void)
printf(“The printf() function printed %d characters.\n”,retvalue);
return 0;
}
输出结果:
the test value is 123
The printf() function printed 22 characters.
8.在scanf()格式字符串的说明符中,除了%c以外,其它说明符均会自动跳过输入项之前的空格。比如:
10.printf()和scanf()的*修饰符:
代码一:
//----使用可变宽度的输出字段----
#include <stdio.h>
int main(void)
{
unsigned width, precision;
int number = 256;
C++primer_plus_第五版_学习笔记
C++源代码风格1每行一条语句2每个函数的两个花括号各占一行3函数中的语句都对于花括号进行缩进4与函数名称相关的圆括号周围没有空白(空行将声明语句与程序的其他部分分开,或在变量前声明,C++的做法是尽可能在首次使用变量前声明)。
变量名的约定:类型_名称或者是类型(int)名称(Akjl)C语言输入输出是printf,scanf,他们都包含在头文件stdio.h中操作符重载:通过重载,同意个操作符将有不同的含义。
&操作符表示地址操作符又表示AND按位操作符,又如指针*Long | coutMain()//可以将两个关键字分开在两行写| << //分开写a=b=c=0;// C/C++中可以连续赋值C++程序应当为程序中使用的每个函数提供原型,而库函数在头文件中有声明,而在库文件中有他的定义。
标准C库中提供了140多个预定义函数,而main()函数不是关键字,由于它不是语法的组成头文件Stdlib.h中rand()函数不接受任何参数,并返回一个随机整数,其函数声明如下:int rand(void);C++类型有基本类型和复合类型Sizeof操作符能够打印类型或变量长度的单位字节数,如:sizeof(int);sizeof a;//a 为变量的值是以前留下的C99添加了两种类型:long long和unsigned long long 两种类型都至少是64位的Cout<<hex;//告诉编译器以16进制的方式输出Cout<<bianliang<<oct;//输出完以后切换到8进制的方式输出Cout<<bianliang<<dec//输出完以后切换回10进制Cout<<1982uL;C++打印常量时候,常量后面加L或l表示1982被存为long型,若是uL或ul表示存为unsigned long型,若是u或U表示存为unsigned int,若无后缀表示存为int。
C程序设计(第五版)谭浩强学习笔记—重点及易错点(第7章-函数)
C程序设计(第五版)谭浩强学习笔记—重点及易错点(第7章-函数)⽤函数实现模块化程序设计⽬录⼀、定义函数定义函数应包括以下⼏个内容:(1) 指定函数的名字,以便以后按名调⽤。
(2) 指定函数的类型,即函数返回值的类型。
(3) 指定函数的参数的名字和类型,以便在调⽤函数时向它们传递数据。
对⽆参函数不需要这项。
(4) 指定函数应当完成什么操作,也就是函数是做什么的,即函数的功能。
这是最重要的,是在函数体中解决的。
类型名函数名(形式参数表列){函数体}例如:int max(int x,int y){ int z; //声明部分z=x>y?x:y; //执⾏语句部分return(z);}当然函数可以没有返回值或者形式参数。
⼆、调⽤函数1.⾸先要对要调⽤的函数进⾏声明2.采⽤合适的⽅式调⽤函数(1). 函数调⽤语句 把函数调⽤单独作为⼀个语句。
如printf_star(); 这时不要求函数带回值,只要求函数完成⼀定的操作。
(2). 函数表达式 函数调⽤出现在另⼀个表达式中,如c=max(a,b); 这时要求函数带回⼀个确定的值以参加表达式的运算。
(3). 函数参数 函数调⽤作为另⼀个函数调⽤时的实参。
如m=max(a,max(b,c));,⼜如:printf (″%d″, max (a,b));3.实参和形参间的数据传递:实参向形参的数据传递是“值传递”,单向传递,只能由实参传给形参,⽽不能由形参传给实参。
实参和形参在内存中占有不同的存储单元,实参⽆法得到形参的值。
例如:{ float add(float x, float y); //对add函数作声明float a,b,c;printf("Please enter a and b:"); //提⽰输⼊scanf("%f,%f",&a,&b); //输⼊两个实数c=add(a,b); //调⽤add函数printf("sum is %f\n",c); //输出两数之和return 0;}float add(float x,float y) //定义add函数{ float z;z=x+y;return(z); //把变量z的值作为函数值返回}三、函数的递归调⽤在调⽤⼀个函数的过程中⼜出现直接或间接地调⽤该函数本⾝,称为函数的递归调⽤。
c语言程序设计基础第五版知识点总结
c语言程序设计基础第五版知识点总结C语言程序设计基础第五版知识点总结C语言是一门广泛应用于科学计算、操作系统、嵌入式系统等领域的编程语言。
对于初学者来说,学习C语言是打下编程基础的重要一步。
本文将总结《C语言程序设计基础第五版》中的主要知识点,帮助读者快速掌握C语言的基本概念和编程技巧。
第一章:C程序设计概述本章主要介绍C语言的发展历史、特点以及编程环境的配置。
读者可以了解到C语言的起源以及C语言程序的基本框架。
第二章:C语言基本数据类型(数据类型、变量、常量)C语言中有多种数据类型,包括整型、字符型、实型等。
本章详细介绍了各种数据类型的定义和使用方法,并提供了一些实例演示。
第三章:C语言运算符和表达式运算符是C语言中常用的操作符号,用于完成各种数学和逻辑运算。
本章详细介绍了各种运算符的使用方法和优先级规则,并提供了一些例子进行实践。
第四章:C语言控制结构控制结构是编程语言中用于控制程序流程的语句和机制。
本章介绍了C语言中的顺序结构、选择结构和循环结构,并提供了一些实例演示,帮助读者理解和应用这些结构。
第五章:C语言数组与字符串数组是C语言中常用的一种数据结构,可以存储多个相同类型的数据。
本章详细介绍了数组的定义和使用方法,并提供了一些例子帮助读者熟悉数组的操作。
字符串是由字符组成的一种特殊的数组,本章也介绍了字符串的相关概念和操作方法。
第六章:C语言函数与参数传递函数是C语言中模块化编程的重要组成部分,函数可以将一些操作封装起来,提高代码的可读性和重用性。
本章详细介绍了函数的定义、调用和传递参数的方法,并提供了一些实例帮助读者掌握函数的使用技巧。
第七章:C语言指针指针是C语言中非常重要的概念,通过指针可以实现对内存的直接操作。
本章介绍了指针的定义和使用方法,包括指针的基本操作、指针与数组和函数的关系等。
第八章:C语言结构体、联合与枚举结构体、联合和枚举是C语言中用于组织和管理复杂数据的机制。
本章详细介绍了结构体、联合和枚举的定义和使用方法,并提供了一些实例帮助读者理解和应用这些机制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++源代码风格1每行一条语句2每个函数的两个花括号各占一行3函数中的语句都对于花括号进行缩进4与函数名称相关的圆括号周围没有空白(空行将声明语句与程序的其他部分分开,或在变量前声明,C++的做法是尽可能在首次使用变量前声明)。
变量名的约定:类型_名称或者是类型(int)名称(Akjl)C语言输入输出是printf,scanf,他们都包含在头文件stdio.h中操作符重载:通过重载,同意个操作符将有不同的含义。
&操作符表示地址操作符又表示AND按位操作符,又如指针*Long | coutMain()//可以将两个关键字分开在两行写| << //分开写a=b=c=0;// C/C++中可以连续赋值C++程序应当为程序中使用的每个函数提供原型,而库函数在头文件中有声明,而在库文件中有他的定义。
标准C库中提供了140多个预定义函数,而main()函数不是关键字,由于它不是语法的组成头文件Stdlib.h中rand()函数不接受任何参数,并返回一个随机整数,其函数声明如下:int rand(void);C++类型有基本类型和复合类型Sizeof操作符能够打印类型或变量长度的单位字节数,如:sizeof(int);sizeof a;//a 为变量头文件climits包含了整型限制信息C++的变量的初始化有两种,第一种c语言的:int a=15;第二种是C++的:int a(15);如果不初始化那么变量的值是以前留下的C99添加了两种类型:long long和unsigned long long 两种类型都至少是64位的Cout<<hex;//告诉编译器以16进制的方式输出Cout<<bianliang<<oct;//输出完以后切换到8进制的方式输出Cout<<bianliang<<dec//输出完以后切换回10进制Cout<<1982uL;C++打印常量时候,常量后面加L或l表示1982被存为long型,若是uL或ul表示存为unsigned long型,若是u或U表示存为unsigned int,若无后缀表示存为int。
char ch=’a’;Cout.put(ch);//成员变量put()可以打印char型变量,我们也可以写成cout.put(‘n’);c++转义序列符 (括号里的为ASCII符号)Cout<<endl<<’\n’<<”\n”;//三种方式等效且都表示换行统统字符名:通用字符名以\u或\U开头,\u后面在跟8个十六进制位,而\U后面跟16个十六进制位,这些位表示的是ISO10646编码(ISO10646是一种正在制定中的国际标准,位大量的字符提供字符编码,他与Unicode合作,确保标准同步,Unicode可以表示96000多种符号和49个手写符号,而ASCII码就是Unicode的一个子集)Cout<<”ni g\u00E2teau.\n”;打印如下ni gâteau //â的ISO10646编码是00E2特殊类型:wcha_t 宽字符类型 Bool类型,任何数字值或指针指都可以被隐式的转换为bool 值。
任何非零值都被转换为TRUE,零被转换为FALSE;反之 int aa=true;long bb=false;也成立!!3.2 Const限定符:const long MONTHS=TRUE;//const限定符用于定义常量Const限定符定义常量时①常量名一般全用大写,便于与变量区分;②要直接初始化,否则将无法初始化3.3浮点数浮点数的书写有两种方式:①常用的标注-942635;②-1.54E-4 5.6545e8 。
浮点类型要添加头文件float.h,浮点型的类型有float(32位,其精度低,系统至少有6位有效数位或更低),double(64位,精度至少在13位有效位),long double(80,96,128位)。
浮点常量默认为double类型若希望常量位float,要用f或F后缀,对于long double类型。
使用l或L(尽量用L,l像1) cout<<2.2L<<3.12f<<8.123;//8.123为double默认型C++标准在默认输出时会删除小数点后末尾的零,如将23.450000显示成23.45。
cout.setf(ios_base::fixed,ios_base::flatfield);//可以覆盖默认设置,让打印末尾的0显示出来3.4 C++算术操作符求模操作符要求两个数必须为整数潜在的数值转换问题①大浮点型→小浮点型:精度降低可能超出目标类型的取值范围,结果是不确定的。
②浮点型→整型:小数丢失,原先的值可能超出目标类型的取值范围,结果不确定。
③大整型→小整形:容易超出范围,通常只复制右边字节强制类型转换:不会修改变量本身,而是创建一个新的指定类型的值。
其格式有两种:(long) bianliang;//c语言强制类型转换的方式Long (bianliang);//c++风格,其想法是让强制转换类型就想是函数调用复合类型:在C语言中叫派生类型,而C++中类使用了“派生”这个词,所以叫复合类型主要内容:1如何创建和使用数组 2如何创建和使用C-风格字符串 3如何创建和使用string 类字符串 4如何使用getline()和get()方法来读取字符串 5如何混合输入字符串和数字 6如何创建和使用结构 7如何创建和使用共享体 8如何创建和使用枚举 9如何创建和使用指针10如何通过new和delete来管理动态内存 11如何创建动态数组 12如何创建动态结构 13自动存储、静态存储和动态存储影响最为深远的复合类型是类,它是我们正要学习的OOP堡垒。
4.1数组(array)数组的三要素是:每个元素的类型,数组名,元素数数组的下标总是从0开始到(元素数减1结束);如果下标超界,编译器不会报错,但可能破坏数据或代码也可能异常终止。
所以必须确保有效下标!!Long kk[10]={10,12,6856,12};//数组初始化,有逗号隔开,大括号里元素可以少于元素总数Long jj[10]; //数组的这种初始化只能用与定义数组的时候。
Cout<<sizeof kk;//输出kk这个数组的字节数他有40个字节Cout<<sizeof kk[1];//输出kk这个数组的第二个元素的位元组数他有4个字节Jj=kk;//不能将以个数组的值赋给另一个数组Long kk[15]={0};//将没个元素都初始化为0的方法,为被定义的元素自动初始化为0!!Long kk[]={0,523,54,3,4};//编译器计算出[ ]内的元素个数,这里为5个Long long_kk=sizeof kk/sizeof(short);//我们不知道数组的个数是多少这样就知道了4.2 字符串C++处理字符串的方式有两种1:来自C语言,常被称为C-风格字符串;另一种基于string类库定义两个char型数组:Char dog[5]={‘a’,’b’,’c’,’d’,’c’};//定义了一个char型数组,储存的不是一个字符串Char cat[5]={‘a’,’b’,’c’,’d’,’\0’};//储存的是一个字符串,到空字符结束!!//在确定存储的字符串所需的最短数组时,别玩了将结尾的空字符计算在内另一种初始化字符串的方法:Char kk[]=”nihao!!”;编译器会在字符串最后加上”\0”字符;字符串用双引号,字符单引号拼接字符串常量:下面的语句是等效的!!Cout<<”我们可以将字符串分开””写,但双引号紧靠着,中间无符号”;//不建议采用这种方法Cout<<”我们也可以将字符串直接写在一对双引号内”;Cout<<”我们也可以将字符串分开写,”//这中方法是解决一行内字符串太多,分行写”并像这样放在两行里,第一行末尾没有分号”;Strlen()函数是标准函数库cString的函数用来确定字符串的长度!!Char kk[15]=”nihao!”;//strlen只计算可见字符,不把空字符计操作数在内Cout<<strlen(kk)<<”” <<sizeof(kk);//sizeof是确定数组的长度Kk[3]=’\0’; //当cout读到’\0’时变停止Cout<<kk<<””<<kk[5];//后面的字符忽略(未被清空),’/0’有截取字符的功能打印如下:6 15 nih !读取一行字符串的输入:istream中的类(如cin)提供面向行的类成员函数:getline()和get().Getline()将丢去换行符,而get()将换行符保留在输入序列中!!Getline()有两个参数,第一个是数组名第二个是读取字符数-1(如若是20,最多度19个)在读取指定数目的字符或遇到换行符书停止读取。
不保存换行符,最后用空字符代替Get()有几个变体!!其中一个与getline相似他们接受参数相同,解释参数也相同。
该函数并不是用空字符代替换行符,而是插入,并将换行符保留在输入列中,这样get()将无法跨行,因为下个get()一开始就读到了换行符,并有把他保存在输入队伍中.Cin.get(kk,20);Cin.get();//Get()另一个变体cin.get()可读取一个字符,即使是换行符,这样就可以保留在Cin.get(mm,20); //输入列中我们可以将两个类成员函数合并:cin.get(array,200).get();//第一个get()返回一个cin对象,该对象随后被用来调用第二个get()函数!!同样:cin.get(array,200). cin.get(array,200);也是可以的等效于调用两次getline()。
而cin.get().get()则不行,以为第一个get()不返回对象.混合输入字符串和数字:Int a; char kk[100];Cin<<a;//如果就这样将跳过下一行,有一个回车;取消回车的方法:(cin<<a).get();//加括号Cin.getline(kk,100);//如果就这样,我们将无法输入字符串就跳到下一行,因为上一行有回车C++程序长使用指针(不是数组)来处理字符串4.3 string类简介Stringl类包含在头文件string里,且位于名称空间std中。