您好!欢迎来到源码码网

C++ Primer Plus 随记4

  • 行业资讯
  • 来源:源码码网
  • 编辑:admin
  • 时间:2020-05-13 16:24
  • 阅读:366

1、strcmp( ):比较两个字符串,相同返回0;第一个字符串按字母顺序排在第二个字母之后将返回负值;


2.类型别名:


#define BYTE char  //使用预处理器,用char替代所有的BYTE,BYTE是char的别名


typedef char byte  //使用关键字typedef ,byte是char的别名。typedef不会创建新类型


3. C++11中基于范围的for循环,对数组(或vector,array)的每个元素执行相同的操作:


double prices[5]= {4.99,5.6,2.13,2.69,7.34};


for (double x : prices)   {cout<<x<<std::end;}


for (double &y : prices)   { y=y*0.8;  } // 要修改数组元素时,循环变量要取地址,改为&y


4、cin() 忽略空格和换行符,cin.get()中包含空格、制表符、换行符。


  cin.get(name,size).get();


5、检测文件尾(EOF) :检测到EOF,cin.eof() 或cin.fail() 将返回bool值true,否则返回bool值 false; 


6.字符输入做法:


char ch; cin.get(ch);  while (cin.fail()==false) { ....  cin.get(ch); }  //或者while (!cin.fail()) 或while (cin) 


char ch;  while (cin.get(ch))  { ... }


int ch; ch=cin.get();  while ( ch!=EOF )  { ...  ch=cin.get(); } 


int ch;   while((ch = cin.get() ) != EOF) {     } 




更常用,拼接字符串:cin.get(ch1).get(ch2);


7.逻辑运算符||  逻辑运算符&&


!的优先级大于逻辑运算符和关系运算符(> < =), &&优先级大于|| ,关系运算符优先级大于 &&,||


8.定义二维字符串数组方式:


(1)char指针数组: char * cities[3]={"Beijing", "TianJin", "ShangHai"};


(2)char数组的数组 char  cities[3][10]={"Beijing", "TianJin", "ShangHai"};


(3)string对象数组 string  cities[3]={"Beijing", "TianJin", "ShangHai"};


希望字符串可以修改的情况下,string类可以自动调节大小更方便。


9.switch语句,while语句中,将int值与枚举量标签进行比较时,枚举量将提升为int。


switch语句中每一个case的标签必须是int或char,还必须是常量


10.continue :跳出循环剩余部分,执行新的一轮循环


     break :跳出循环剩余部分,不在执行循环语句


switch一般与break组合使用


int chice[3]={0,1,2};


switch (choice){case 0: ... break;  case 1: ... break; case 2: ... break;  }


11.int n[6];  for(i=0;i<6;i++){


 cout<<"round "<<i+1<<" : ";


while(!(cin>>n[i])){   //当输入不是字符时,执行下面循环


cin.clear(); // 如果输入的是字符,不是数字时,应利用cin.clear() 重置cin以接受新的输入。


while (cin.get() != ' ')   continue;  //while中用cin.get() 读取行尾之前的输入,从而删除这行错误输入


cout<<"Pleae enter a number:  ";


}  }


12.写入文本文件文件输出:必须包含头文件 #include<fstream>,需要声明一个或多个ofstream对象,将ofstream对象与文件关联用open()方法。使用完文件用close()关闭。可以使用ofstream对象和运算符<<来输出各种类型的数据。(和cout类似)


   


#include "stdafx.h"

#include<iostream>

#include<fstream>

 

int _tmain()

using namespace std;

char automobile[50];

int year;

double a_price,d_price;

 

ofstream outfile; //创建一个输出的ofstream对象,可以像使用cout一样使用outfile

outfile.open("carinfo.txt"); //关联的文件,创建一个名为carinfo.txt的文件

cout << "Enter the make and model of automobile: ";

cin.getline(automobile, 50);

cout << "Enter the model year: ";

cin >> year;

cout << "Enter the original asking price: ";

cin >> a_price;

d_price = 0.913*a_price;

cout << fixed;

cout.precision(2);  //设置显示精确度为2位并返回上一次的设置。

cout.setf(ios_base::showpoint); //显示浮点数小数点后的0;

cout << "Make and Model: " << automobile << endl;

cout << "Year: " << year << endl;

cout << "Was asking $" << a_price << endl;

cout << "Now asking $" << d_price << endl;

 

outfile << fixed;  //可以像使用cout一样使用outfile

outfile.precision(4);  ////设置输出精确度为4位并返回上一次的设置。

outfile.setf(ios_base::showpoint);  

outfile << "Make and Model: " << automobile << endl;

outfile << "Year: " << year << endl;

outfile << "Was asking $" << a_price << endl;

outfile << "Now asking $" << d_price << endl;

 

outfile.close();  //关闭文件

return 0;

}

13.读取文本文件:必须包含头文件 #include<fstream>,需要声明一个或多个ifstream对象,将ifstream对象与文件关联用open()方法。使用完文件用close()关闭。可以使用ifstream对象和运算符>>来读取各种类型的数据。


可以使用ifstream对象和get()方法来读取一个字符。使用ifstream对象和getline()方法来读取一行字符。


使用ifstream对象和eof() 、fail()等方法来判断输入是否成功


ifstream对象本身作为测试条件时,如果最后一个读取操作成功,它将会被转化为bool值true.(和cin类似)


检查文件是否被成功打开用方法is_open();


#include "stdafx.h"

#include<iostream>

#include<fstream>

#include<cstdlib> //支持exit()

const int SIZE = 60;

 

int _tmain()

using namespace std;

char filename[SIZE];

ifstream infile;

cout << "Enter name of data file: ";

cin.getline(filename, SIZE);  //输入要读取的文件名

infile.open(filename);

if (!infile.is_open()) //检查文件是否被成功打开

{

cout << "Could not open the file" << endl;

cout << "Program terminating. ";

exit(EXIT_FAILURE);

}

double value;

double sum = 0.0;

int count = 0;

infile >> value; //在循环外读取第一个值

while (infile.good()) //读取输入操作成功且未到达EOF

{

++count;

sum += value;

infile >> value;  //读取下一个值

}

if (infile.eof()) //判读是否达到EOF

cout << "End of file read. ";

else if (infile.fail()) //可以检测EOF或类型不匹配

cout << "Input terminated by data mismatch. ";

else

cout << "Input terminated by unkonwn reason. ";

if (count == 0)

cout << "No data processed. ";

else

{

cout << "Item read: " << count << endl;

cout << "Sum: " << sum << endl;

cout << "Average: " << sum / count << endl;

}

infile.close();

return 0;

}

infile >> value; //在循环外需进行一次读取

    while (infile.good()) //

    {  .......

          infile >> value;  //读取下一个值

    } 


以上这一部分等效于


while (infile>>value)  //读取并测试是否成功


{ ...... } 

————————————————


原文链接:https://blog.csdn.net/lvliang2017232003/java/article/details/85645040


特别声明:
1、如无特殊说明,内容均为本站原创发布,转载请注明出处;
2、部分转载文章已注明出处,转载目的为学习和交流,如有侵犯,请联系客服删除;
3、编辑非《源码码网》的文章均由用户编辑发布,不代表本站立场,如涉及侵犯,请联系删除;
全部评论(0)
推荐阅读
  • open claw最近很火,如何理性看待?
  • open claw最近很火,如何理性看待?
  • openclaw是2026年初科技圈最火爆的现象级话题。它不仅仅是又一个AI产品,更被百川智能的王小川誉为与ChatGPT诞生同等重要的里程碑——标志着AI从”只会说”的对话者,进化到了”能够做”的行动者。对于这股全民”养虾”热潮,我的观察是:它代表了一次人机关系的革命性跃迁,但同时也是一场充满风险与泡沫的狂欢,其真正的价值需要在喧嚣褪去、安全与成本的挑战被克服后才能显现。下
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-03-17 11:06
  • 阅读:33
  • 原生小程序和封装的小程序有什么区别
  • 原生小程序和封装的小程序有什么区别
  • 原生小程序和封装的小程序是两种不同的开发模式,主要区别在于开发方式、性能表现、代码维护以及跨平台能力。为了让你更清晰地理解,我们可以把“原生”比作用钢筋水泥直接盖楼,而“封装”则是用预制板或套件来组装楼。以下是详细的对比分析:1.定义与本质原生小程序:定义: 直接使用微信官方提供的开发工具、语法和API进行开发。语言: 使用微信自己定义的一套技术栈(WXML(微信标记语言)做结构、WXSS(微信样式表)做样式、JS
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-03-06 11:54
  • 阅读:255
  • 基于NetCore(Razor Page)开发的Cms建站系统MIT协议
  • 基于NetCore(Razor Page)开发的Cms建站系统MIT协议
  • FytSoaCms一款基于NetCore2.2/3.1(RazorPage)功能强大的Cms建站系统,支持前后端分离。简介:模块化:全新的架构和模块化的开发机制,便于灵活扩展和二次开发。模型/栏目/分类信息体系:通过栏目和模型绑定,以及不同的模型类型,不同栏目可以实现差异化的功能,轻松实现诸如资讯、下载、讨论和图片等功能。通过分类信息和栏目绑定,可以自动建立索引表,轻松实现复杂的信息检索。FytSoa是一套基于NetCore+SqlS
  • 开发工具
  • 来源:gitee
  • 编辑:源码码网
  • 时间:2026-01-24 22:21
  • 阅读:300
  • 基于JAVA开发的企业级平台微信公众号管理系统SmartWx
  • 基于JAVA开发的企业级平台微信公众号管理系统SmartWx
  • SmartWx微信公众号管理系统是一个完整的微信公众号web操作版,直接编译即可运行。让用户不再用关心微信的底层接口,直接使用页面进行操作,简单方便。包括服务器绑定、文本管理、图文管理、菜单管理、粉丝管理、群发消息等。技术框架开发语言:JAVA数据库:MYSQLJAVA开发框架:SpringMVC+Spring+Mybatis缓存框架:j2cache前端开发框架:Layui+JQuery+html前台模板引擎:art-templat
  • 源码教程
  • 来源:gitee
  • 编辑:源码码网
  • 时间:2026-01-24 21:53
  • 阅读:295
  • 前后端分离的Java快速开发平台renren-security可免费商用
  • 前后端分离的Java快速开发平台renren-security可免费商用
  • renren-security是一个轻量级的,前后端分离的Java快速开发平台,能快速开发项目并交付【接私活利器】采用SpringBoot3.x、Shiro、MyBatis-Plus、Vue3、TypeScript、ElementPlus、VueRouter、Pinia、Axios、Vite框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。提供了代码生成器,只
  • 源码教程
  • 来源:gitee
  • 编辑:源码码网
  • 时间:2026-01-23 13:03
  • 阅读:200
联系客服
源码代售 源码咨询 技术开发 联系客服
029-84538663
手机版

扫一扫进手机版
返回顶部