C++ Print Plus 学习笔记 第六章 分支、逻辑表达式、cctype、 三元运算 switch 类型错误的文本处理 和I/O

本文主要是介绍C++ Print Plus 学习笔记 第六章 分支、逻辑表达式、cctype、 三元运算 switch 类型错误的文本处理 和I/O,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

if ifelse ifelseif 这三个 都不说了

有一个要留意

关于逻辑表达式要留意的:

|| 运算顺序是先算左边再算右边 如果左边为true 那他就不管右边了 。直接返回true

cctype:

 

三元运算:

#include <iostream>
int main()
{using namespace std;int a, b;cout << "Enter two integers: ";cin >> a >> b;cout << "The larger of " << a << " and " << b;
// 如果是true 就返回a  否则 返回bint c = a > b ? a : b;cout << " is " << c << endl;return 0;
}

关于switch:

每个case 中如果没带break 的话 就会从被跳转到的case中 一直执行下去 ,执行完switch中的所有语句 所以 所有的case中一定要带有break语句

关于 cin>> 输入错误类型的处理:

比如 int型变量 被输入了字符类型时的处理:

#include <iostream>
const int Max = 5;
int main()
{using namespace std;int golf[Max];cout << "Please enter your golf scores.\n";cout << "You must enter " << Max << " rounds.\n";int i;for (i = 0; i < Max; i++){cout << "round #" << i + 1 << ": ";
// ---------这里while (!(cin >> golf[i])) {cin .clear();while (cin.get() != '\n')continue;cout << "Please enter a number: ";}
// -----------}double total = 0.0;for (i = 0; i < Max; i++)total += golf[i];cout << total / Max << " = average score "<< Max << " rounds\n";return 0;
}

文件I/O

文件输入:

代码示例:

#include <iostream>
#include <fstream>int main()
{using namespace std;char automobile[50];int year;double a_price;double d_price;ofstream OutFile;
// 如果文件不存在就创建 如果存在 将会清空文件内容(真变态)。OutFile.open("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);cout.setf(ios_base::showpoint);cout << "Make and model: " << automobile << endl;cout << "Year: " << year << endl;cout << "Was asking $" << a_price << endl;cout << "Now asking $" << d_price << endl;OutFile << fixed;OutFile.precision(2);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;
}

 

carinfo.txt内容展示:

读取文件:

示例代码:

#include <iostream>
#include <fstream>
#include <cstdlib>
const int SIZE = 60;
int main()
{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 " << filename << endl;cout << "Program terminating.\n";
// #include <cstdlib>
// 程序退出exit(EXIT_FAILURE);}double value;double sum = 0.0;int count = 0;inFile >> value;while (inFile.good()){++count;sum += value;inFile >> value;}if (inFile.eof())cout << "End of ile reached.\n";else if (inFile.fail())cout << "Input terminated by data mismatch.\n";elsecout << "Input terminated for unknown reason.\n";if (count == 0)cout << "No data processed.\n";else{cout << "Items read: " << count << endl;cout << "Sum: " << sum << endl;cout << "Average: " << sum / count << endl;}inFile.close();return 0;
}

我就碰到这种情况 我使用VSCode 最后一行没有回车 结果 最后一行的数据死活没读取到

关于good()

  inFile >> value;while (inFile.good()){++count;sum += value;inFile >> value;}

可以精简为

  while (inFile >> value){++count;sum += value;}

原因:

 

第六章总结:

第六章结束  内容比较简单 但是也多。

这篇关于C++ Print Plus 学习笔记 第六章 分支、逻辑表达式、cctype、 三元运算 switch 类型错误的文本处理 和I/O的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/639654

相关文章

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Java Lambda表达式的使用详解

《JavaLambda表达式的使用详解》:本文主要介绍JavaLambda表达式的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言二、Lambda表达式概述1. 什么是Lambda表达式?三、Lambda表达式的语法规则1. 无参数的Lambda表