cout

[实验7]流类库与输入输出

给你一囗甜甜゛ 提交于 2020-03-10 04:48:58
一、实验目的 理解流的概念 熟悉流类库中常用的类及成员函数用法 熟悉 I/O 格式控制方法,掌握常用格式控制 了解文件 I/O,掌握文件 I/O 基本用法 二、实验准备 结合第 11 章教材、课件,复习/学习如下内容: 1.基础知识 (1)流是什么?如何理解? (2)C++ 中 I/O 是通过什么来实现的? (3 )常用 I/O 流类的继承/派生层次关系 (4 )预定义标准流对象 cin, cout, cerr, clog 2.C++中格式化 I/O 方法 3.文件 I/O 方法及常用成员函数 三、实验内容 1.基础练习 (1)教材习题 11-7 (2)教材习题 11-3 (3)教材习题 11-4 2.应用练习 (1)已知有班级名单文件list.txt(见实验 7 附件包)。编写一个应用程序实现随机抽点 5 位同学,在屏幕上显示结果,同时,也将结果写入文件 roll.txt。 ① 编写程序实现题目基本功能要求。(必做) ② ******选做******) 对 ①中实现的基本功能进行完善、扩充,使得这个点名应用程序更灵活、更方便。比如: a) 从键盘输入班级文件名,支持对不同班级的点名操作; b) 从键盘输入用于保存点名结果的文件名。更灵活地,自动获取当前系统日期作为文件名,比如 20180612.txt。(如果希望更细粒度,文件名可以到小时和分钟这一层级); c)

bitset

回眸只為那壹抹淺笑 提交于 2020-03-09 22:48:24
C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。 bitset常用构造函数有四种,如下 bitset<4> bitset1;  //无参构造,长度为4,默认每一位为0 bitset<8> bitset2(12);  //长度为8,二进制保存,前面用0补充 string s = "100101"; bitset<10> bitset3(s);  //长度为10,前面用0补充 char s2[] = "10101"; bitset<13> bitset4(s2);  //长度为13,前面用0补充 cout << bitset1 << endl;  //0000 cout << bitset2 << endl;  //00001100 cout << bitset3 << endl;  //0000100101 cout << bitset4 << endl;  //0000000010101 注意: 用字符串构造时,字符串只能包含 '0' 或 '1' ,否则会抛出异常。 构造时,需在<>中表明bitset 的大小(即size)。 在进行有参构造时,若参数的二进制表示比bitset的size小,则在前面用0补充(如上面的栗子);若比bitsize大,参数为 整数 时取后面部分,参数为 字符串 时取前面部分

C++中关于String函数的常用方法总结

不想你离开。 提交于 2020-03-08 06:54:46
一. string的构造函数的形式: string str:生成空字符串 string s ( str ) :生成字符串为str的复制品 string s ( str , strbegin , strlen ) :将字符串str中从下标strbegin开始、长度为strlen的部分作为字符串初值 string s ( cstr , char_len ) :以C_string类型cstr的前char_len个字符串作为字符串s的初值 string s ( num , c ) :生成num个c字符的字符串 string s ( str , stridx ) :将字符串str中从下标stridx开始到字符串结束的位置作为字符串初值 eg : string str1 ; //生成空字符串 string str2 ( "123456789" ) ; //生成"1234456789"的复制品 string str3 ( "12345" , 0 , 3 ) ; //结果为"123" string str4 ( "012345" , 5 ) ; //结果为"01234" string str5 ( 5 , '1' ) ; //结果为"11111" string str6 ( str2 , 2 ) ; //结果为"3456789" # include <iostream> # include

字符数组 字符串 strcpy strlen

最后都变了- 提交于 2020-03-07 21:04:55
文章目录 1.字符串 2.下面来看看字符数组 3. strlen和strcpy 1.字符串 c++中字符串都是以'\0'结尾 const char * ss = "abc" ; cout << ss << endl ; cout << strlen ( ss ) << endl ; //后续会讲 输出 2.下面来看看字符数组 char ss [ ] = { 'a' , 'b' , 'c' } ; cout << ss << endl ; 输出 这里字符ss在字符‘c’之后若干个字符才是’ \0' ,这时才结束。如果将ss赋值给一个字符指针,并输出字符指针,那么输出仍然是一样的。 const char * s1 = ss ; cout << s1 << endl ; 3. strlen和strcpy //不统计'\0' strlen ( const char * ) ; //按字节拷贝,直到遇见'\0',并且将'\0'拷贝 strcpy ( char * dst , const char * src ) ; //将这个字符串常量拷贝到一个数组中必须给数组空间 const char * s = "abc" ; // strlen(s) = 3,而拷贝到数组中必须要有'\0',因此 “+1” char * p = new char [ strlen ( s ) + 1 ] ;

C++继承学习代码详解

我们两清 提交于 2020-03-07 19:18:13
4.6 继承 继承是面向对象三大特性之一 我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。 这个时候我们就可以考虑利用继承的技术,减少重复代码 4.6.1 继承的基本语法 例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同 接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处 普通实现: //Java页面 class Java { public: void header() { cout << "首页、公开课、登录、注册...(公共头部)" << endl; } void footer() { cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl; } void left() { cout << "Java,Python,C++...(公共分类列表)" << endl; } void content() { cout << "JAVA学科视频" << endl; } }; //Python页面 class Python { public: void header() { cout << "首页、公开课、登录、注册...(公共头部)" << endl; } void footer() { cout << "帮助中心、交流合作、站内地图...(公共底部)" <

第三章 字符串、向量和数组

牧云@^-^@ 提交于 2020-03-07 11:04:58
3.2 1 #include <iostream> 2 #include <string> 3 4 using std::cin; 5 using std::cout; 6 using std::endl; 7 using std::string; 8 9 int main() 10 { 11 string line; 12 while (getline(cin, line)) 13 cout << line << endl; 14 return 0; 15 } 一次读入一行 1 #include <iostream> 2 #include <string> 3 4 using std::cin; 5 using std::cout; 6 using std::endl; 7 using std::string; 8 9 int main() 10 { 11 string word; 12 while (cin >> word) 13 cout << word << endl; 14 return 0; 15 } 一次读入一个单词 3.3 输入运算符:自动忽略string类对象开头的空白(即空格符、换行符、制表符等),并从第一个真正的字符开始读起,直到遇见下一处空白为止。 getline函数:从给定的输入流中读入内容,直到遇到换行符为止(换行符也被读进来了)

c++11 随机数random

大兔子大兔子 提交于 2020-03-07 08:08:50
c++11提供的<random>实现了随机数库,它通过随机数引擎类(random_number_engines)产生随机数序列,随机数分布类(random-number distribution)使用随机数引擎生成服从特定概率分布的随机数。 让我们看一个简单的例子: #include <iostream> #include <random> using std::cout; using std::endl; using std::default_random_engine; int main() { default_random_engine e; for (size_t i = 0; i < 10; ++i) //生成十个随机数 cout << e() << endl; cout << "Min random:" << e.min() << endl; //输出该随机数引擎序列的范围 cout << "Max random:" << e.max() << endl; return 0; } 生成的随机数结果: 在例子中,随机数类是定义在std命名空间的,所以要声明。随机数引擎是函数对象,这就是为什么使用e()去生成随机数。程序每次运行都会生成相同的随机数序列,这在一定程度有利于程序的调试,但我们有时需要每一次运行产生的随机数序列都是不同的

回顾C++11标准特性(1)

风流意气都作罢 提交于 2020-03-05 18:21:31
今天突发奇想不想使用cout进行输出信息了,想把cout换成自己任意指定的非关键词变量名字进行输出 #include <iostream> using namespace std; int main(){ decltype(cout) &shit = cout; shit<<"i am piece of shit"<<endl; return 0; } 需要注意的是,我是用g++进行编译的时候需要指明使用的标准 g++ shit.cpp -o shit -std=c++11 这样就实现了使用 shit 替换 cout 的目的. 获取类型在c++11标准中有两个操作符,一个是 auto 一个是 decltype , 不同的是 auto 好像只能获取基础类型的类型信息,如果是自定义类型,就有问题 事实证明 auto &shit = cout 也可以正常执行 auto是通过右值进行推导类型,而decltype像是一个函数,传入表达式或者对象作为参数可以获得其类型 decltype类型指示符的详细细节 delctype 接表达式作为参数,针对只含有一个变量的表达式和不是一个变量的表达式表现不同的效果 delctype接 只含有一个变量的表达式 则返回这个变量的类型,包括顶层const和引用在内,这一点 和auto不同 ,auto不能得到一个变量的顶层const,也不能操作引用

C中的sizeof要点

為{幸葍}努か 提交于 2020-03-05 16:40:37
对函数使用sizeof,在编译阶段会被函数返回值的类型取代。如:首先要明确sizeof不是函数,也不是一元运算符,它是个类似宏定义的特殊 关键字 ,sizeof();括号内在编译过程中是不被编译的,而是被类型替代。 如 int a=8;sizeof(a++); 在编译过程中,a的值不会变,只是被替换成类型sizeof(int);结果为4. 如 sizeof(a=6); 呢,也是一样的转换成a的类型,但是要注意 因为a=6是不被编译的,所以执行完 sizeof(a=6);a的值还是8,是不变的! 记住一下结论: 1.unsigned影响的只是最高位bit的意义(正负),数据长度不会被改变的。所以 sizeof(unsigned int) == sizeof(int); 2. 自定义类型的sizeof取值等同于它的类型原形。如 typedef short WORD;sizeof(short) == sizeof(WORD)。 3. 对函数使用sizeof,在编译阶段会被函数返回值的类型取代。如: int f1(){return 0;}; cout << sizeof(f1()) <<endl; // f1()返回值为int,因此被认为是int 4. 只要是指针,x86就是4,x64就是8。如:cout < <sizeof(string*) < <endl; // 4 5.

C++ std::array

可紊 提交于 2020-03-05 08:04:18
std::array template < class T, size_t N > class array; Code Example #include <iostream> #include <array> #include <cstring> using namespace std; int main(int argc, char **argv) { array<int, 5> intArr = {1,2,3,4,5}; for(auto it = intArr.begin(); it != intArr.end(); it++ ) { cout << *it << "\t"; } ///< output: 1 2 3 4 5 cout << "\n"; ///< r means reverse for(auto rit = intArr.rbegin(); rit < intArr.rend(); rit++) { cout << *rit << "\t"; } ///< output: 5 4 3 2 1 cout << "\n"; ///< c means const for(auto cit = intArr.cbegin(); cit != intArr.cend(); cit++ ) { cout << *cit << "\t"; } ///< output:1 2