primer

C++ Primer Plus(十七)——输入、输出和文件

旧街凉风 提交于 2019-12-09 18:58:38
1. cerr和clog对象与标准错误流对应,但cerr不被缓冲。 2. streambuf类为缓冲区提供了内存,并提供了用于填充缓冲区、访问缓冲区内容、刷新缓冲区和管理缓冲区内存的类方法。ios_base类表示流的一般特征(是否可读取?二进制流?等,ios类基于ios_base,包含一个指向streambuf的指针成员 3. ostream提供了put和write方法,前者用于显示字符,后者用于显示字符串。write的第一个参数提供了要显示的字符串地址,第二个指出要显示多少个字符。需要注意的是write方法并不会在遇到空字符时停止打印字符,而是打印指定数目的字符,即使超出了字符串的边界。 4. 多数C++实现都会在输入即将发生时刷新缓冲区。如果实现并不能在希望时刷新输出,那么可以使用两个控制符中断一个强行刷新:控制符flush刷新缓冲区;控制符endl不仅刷新缓冲区还插入一个换行符。事实上,控制符也是函数,可以直接调用刷新,如flush(cout)。 5. cout 进行格式化,浮点数的老式实现和新实现有所不同,新实现当指数大于等于6或小于等于5时,用科学计数法表示,默认的行为对应于带%g说明符的标准C库函数fprintf。 6. cout如何设置显示整数时的计数系统:dec、hex和oct控制符,如hex(cout) 7. cout调整字符宽度: int width(); //

C++关于不能返回局部变量的指针的研究

房东的猫 提交于 2019-12-09 13:34:34
这里记录一下C++关于不能返回局部变量的指针的研究。关于C++不能返回局部变量的引用很好理解,这里就不探讨了。以下如有不对的,麻烦纠正一下,一起学习进步~。 先总结一下吧: C++Primer中这句话的含义我认为是我不要使用任何在栈内存中分配内存的变量的引用或者指针作为返回值,由于栈内存在方法执行完毕后会将栈内存释放,因此得到的返回值是指向的地址是无效的。 在Java中我们可以随意的返回一个对象,如下: //常量 public String getTest(){ String result="sadads"; return result; } //对象 public Test get(){ Test test=new Test(); return test; } 我的理解是由于对象分配的内存在堆上,而常量则记录在方法区(上述的例子的"sadads"),而不是在虚拟栈中进行的内存分配,随着一个方法的结束,虽然栈帧中的内存释放了,但是对象在GC回收之前仍然在堆中存活,更别说常量了。 而对于C++而言,局部变量可能有很多种,包括数组,基本变量,以及我们自己写的对象,一一看下对应的返回局部变量指针的正确性。 返回数组局部变量的指针 首先我们看下数组的形式: char* ee(){ char x[]="12323"; char*p=x; return p; } int main(int

献给入门C++/Java选择困难综合症患者

我的未来我决定 提交于 2019-12-07 11:50:45
如何让技术群活跃起来?PHP是世界上最好的语言。 没有优秀之分,否则只能显得你不懂另一门语言。如果你想学,那么请远离C/C++,请使用Java,以一个学长的身份,阐述一下。C++向后兼容C,这句话说明C++为了长的更像C,举个最简单的例子split函数,分隔字符串,C++就得重新手写,你说有Boost,好,那也只是准标准库,并非标准库拿来就用。你看看Java,Go还有你们喜欢的Python哪个标准库里没有split?不仅一个小小的函数,连XML,JSON,数据库连接等常用的库,C++也只能寻求三方库或者亲爹Boost,而Java能给你包罗万象的库。不仅如此,对于网络库来说Windows和Linux API也不尽相同,也就是说你的#include <windows.h>在Linux g++里会报错,别说Boost::asio,用起来习惯吗?你看Java相同的代码,在相同虚拟机跑会出错吗?Go相同代码在上述系统也不需要改任何一点东西。C++伟大的STL泛型模板,令人仰望,再看Java Object类,或者Go interface{},世界就清净多了。除此之外,还不用担心内存泄露。也许,你在遇到Qt之前还会走入可怕的MFC。也许,接触不到http协议的B/S架构(网页后台)。也许,好奇爬虫是什么。或许,用Java就能解决一切。但是,他们都说自己比较快。 行啊,《C++ Primer》

权威的C ++书籍指南和清单

痴心易碎 提交于 2019-12-05 23:23:43
这篇文章是 社区维基 。 编辑现有答案以改善此职位。 它当前不接受新的答案。 这个问题试图收集每年出版的数十本糟糕的C ++书籍中的珍珠。 与许多其他编程语言不同,这些语言通常是在Internet上的教程中经常使用的,而无需学习一本精心编写的C ++书籍,很少有人能够快速使用C ++。 这样做太大,太复杂。 实际上,它是如此之大和复杂,以至于 有很多非常糟糕的C ++书籍 。 我们不是在谈论不良的风格,而是诸如炫耀 明显的事实错误 和 推广极差的不良编程风格之类的东西 。 请编辑接受的答案,以提供 优质的书籍 和大致的技能水平- 最好 是 在C ++聊天室中 讨论添加内容 之后 。 (如果常规员工不同意建议,他们可能会毫不留情地撤消您的工作。)为您亲自阅读/受益的每本书添加简短的简介/说明。 随时讨论质量,标题等。符合条件的书籍将添加到列表中。 具有C和C ++用户协会(ACCU)的评论的书籍具有该评论的链接。 *注意:常见问题解答和其他资源可以在 C ++标签信息 和 c ++-faq下找到 。 #1楼 初学者 入门,没有以前的编程经验 C ++ Primer *(Stanley Lippman,JoséeLajoie和Barbara E. Moo)( 针对C ++ 11更新 )以1k页的篇幅 对C ++ 进行了非常全面的介绍,它以一种易于访问的格式涵盖了该语言的几乎所有内容

static_cast用法

旧街凉风 提交于 2019-12-04 18:45:26
用法:static_cast < type-id > ( expression )  该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:  ①用于类层次结构中基类(父类)和 派生类 (子类)之间指针或引用的转换。  进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;  进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。  ②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。  ③把空指针转换成目标类型的空指针。  ④把任何类型的表达式转换成void类型。  注意:static_cast不能转换掉expression的const、volatile、或者__unaligned属性。  C++中static_cast和 reinterpret_cast 的区别   C++primer 第五章里写了 编译器 隐式执行任何类型转换都可由static_cast显示完成;reinterpret_cast通常为操作数的位模式提供较低层的重新解释  1、C++中的static_cast执行非 多态 的转换,用于代替C中通常的转换操作。因此,被做为隐式类型转换使用。比如:  int i;  float f = 166.7f

UML books

时光毁灭记忆、已成空白 提交于 2019-12-04 10:56:32
UML 经典的图书: 请各位推荐几本uml的经典书籍 [问题点数:100分,结帖人dayn9] 一键查看最优答案收藏帖子回复 dayn9 Bbs1 结帖率 98.9% 就像《设计模式》《C++primer》一样经典的。 0 2002-08-26 21:08:28回复数 6 只看楼主 引用 举报 楼主 K一个朱头 Bbs1 谈不上经典,UML理论——《UML和模式应用》《统一软件开发过程》《UML参考手册》——是一套书。 UML应用——《UML with Rational Rose 从入门到精通》好象出了2000版. 0 2002-08-26 21:22:34只看TA 引用 举报 #1 得分 20学习UML,有没有好书推荐 如题。之前零零散散的学过多次UML,现在想系统的学一下 zhishao Bbs1 同意楼上的《统一软件开发过程》: The Unified Software Development Porcess, Ivar Jacobson, Grady Booch, and James Rumbaugh. 但在这之前,你应该看这本书: The Unified Modeling Language User Guide, Grady Booch, James Rumbaugh, and Ivar Jacobson. The ultimate tutorial to UML

C++ Primer 笔记整理(一)基本语法介绍

╄→гoц情女王★ 提交于 2019-12-04 10:17:59
C++被称为“完美的程序设计语言”,在chromium内核中应用非常广泛,之前没有系统学习过C++相关的知识,通过看书来学习相关的知识,现在将《C++ Primer》基本知识提取出来,供大家学习。 1.输入输出 2.变量与基本类型 2.1 引用与指针 2.1.1 获取对象地址 2.1.2 指针值 2.1.3 利用指针访问对象 2.1.4 空指针 2.1.5 void* 指针 2.2 const符号 2.2.1 constexpr 2.3 处理类型 2.3.1 类型别名 2.3.2 auto类型说明 2.3.3 decltype类型指示符 2.4 结构体 3.字符串、向量、数组 3.1 string标准库 3.1.1 初始化string对象 3.1.2 string执行操作 3.1.3 string中字符处理操作 3.2 vector标准库 3.2.1 向vector添加元素 3.2.2 其他vector操作 3.3 迭代器 3.3.1 迭代器运算 3.4 数组 3.4.1 指针和数组 1.输入输出 标准输入输出是一个语言的重要功能。 cin是C++中的标准输入流对象,主要用于从标准输入读取数据,这里的标准输入,是指键盘。 cout是输入流对象,即ostream类的对象。 在理解cin功能时,不得不提标准输入缓冲区

C Primer Plus 第2章 C语言概述

孤者浪人 提交于 2019-12-01 09:55:40
2.1一个简单的实例 程序清单2.1 first.c程序 ------ #include <stdio.h> int main() { int num; num=1; printf("I am a simple"); printf("computer.\n"); printf("My favorite number is %d because it is first . \n",num); return 0 ; } 2.2实例说明 2.2.2程序细节 一、#include 指示和头文件 #include <stdio.h> 该句相当于您在文件中该行键入了stdio.h文件的完整内容。这样可以在多个程序间共享公用的信息。 #include 语句是C预处理器指令(preprocessor directive)的一个例子。通常,C编译器在编译前要对源代码 做一些准备工作,这称为预处理。 stdio.h(standard inprt output header)文件作为所有C编译包的一部分提供,包含有关输入和输出的函数信息以供编译器使用。在C中,人们称出现在文件顶部的信息集合为头(header),C实现通常都带有许多头文件。 简言之,头文件指引编译器把您的程序正确的组合到一起。 二、main()函数 一个C程序总是(不考虑例外)从main()函数开始。这个函数是C程序的基本模块。

从「林」开始--C++ primer 读书笔记 -- Part II: Containers ...

梦想的初衷 提交于 2019-11-30 17:19:30
从「林」开始--C++ primer 读书笔记 -- Part II: Containers and Algorithms ###################################################### // 声明 : 1 笔记基本都是从《C++ Primer第四版中英文对照.chm》复制而来! 2 延伸的知识会以 黄色字体 高亮,欢迎拍砖 3 个人阅读重点将用 红色字体 高亮! ###################################################### Chapter 9. Sequential Containers 1:The library defines three kinds of sequential containers: vector( Supports fast random access ) , list( Supports fast insertion/deletion ) , and deque (short for "double-ended queue" and pronounced "deck"). 2: // copy elements from vec into ilist list<int> ilist(vec.begin(), vec.end()); ilist.begin() +

权威的C ++书籍指南和清单

眉间皱痕 提交于 2019-11-29 14:30:57
这篇文章是 社区维基 。 编辑现有答案以改善此职位。 它当前不接受新的答案。 这个问题试图收集每年出版的数十本糟糕的C ++书籍中的珍珠。 与许多其他编程语言不同,这些语言通常是在Internet上的教程中经常使用的,而无需学习一本精心编写的C ++书籍,很少有人能够快速使用C ++。 这样做太大,太复杂。 实际上,它是如此之大和复杂,以至于 有很多非常糟糕的C ++书籍 。 我们不是在谈论不良的风格,而是诸如炫耀 明显的事实错误 和 推广极差的不良编程风格之类的东西 。 请编辑接受的答案,以提供 优质的书籍 和大致的技能水平- 最好 是 在C ++聊天室中 讨论添加内容 之后 。 (如果常规员工不同意建议,他们可能会毫不留情地撤消您的工作。)为您亲自阅读/受益的每本书添加简短的简介/说明。 随时讨论质量,标题等。符合条件的书籍将添加到列表中。 具有C和C ++用户协会(ACCU)的评论的书籍具有该评论的链接。 *注意:常见问题解答和其他资源可以在 C ++标签信息 和 c ++-faq下找到 。 #1楼 初学者 入门,没有以前的编程经验 C ++ Primer *(Stanley Lippman,JoséeLajoie和Barbara E. Moo)( 针对C ++ 11更新 )以1k页的篇幅 对C ++ 进行了非常全面的介绍,它以一种易于访问的格式涵盖了该语言的几乎所有内容