《C++ Primer Plus》学习笔记——第5章 循环和文本输入

这篇具有很好参考价值的文章主要介绍了《C++ Primer Plus》学习笔记——第5章 循环和文本输入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 概述

C++中支持三种循环,for循环、while循环和do while循环。

2 for循环

for循环遍历字符串输出

int main() {
    using namespace std;
    string str;
    cin >> str;
    for (int i = 0; i < str.size(); ++i) {
        cout << "str[" << i <<"] = " << str[i] << endl;
    }
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

输出

234fds
str[0] = 2
str[1] = 3
str[2] = 4
str[3] = f
str[4] = d
str[5] = s
Hello, World!

这里的++i通常也有人写常i++,有前缀和后缀的区别。从语义上来说,二者都是对i进行自增。但是从效率上来说,可能存在差异。通常i++会将i复制一个副本,然后加一,然后再写回,而++i则是直接在i上面加一写回,效率要高一些。但是通常编译器优化时会将基本数据类型中的i++转换成++i。而对于类而言,用户自定义的自增函数,则++i类似的会更高效一些。

2 while循环

int main() {
    using namespace std;
    string str;
    cin >> str;
    int i = 0;
    while(i < str.size()) {
        cout << "str[" << i <<"] = " << str[i++] << endl;
    }
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

输出

234fds
str[0] = 2
str[1] = 3
str[2] = 4
str[3] = f
str[4] = d
str[5] = s

只要while判断为true则执行循环体内容

3 do while循环

int main() {
    using namespace std;
    string str;
    cin >> str;
    int i = 0;
    do {
        cout << "str[" << i <<"] = " << str[i++] << endl;
    }while(i < str.size());243
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

输出

234fds
str[0] = 2
str[1] = 3
str[2] = 4
str[3] = f
str[4] = d
str[5] = s

4 循环和文本输入

4.1 空格等输入问题

#include <iostream>

int main() {
    using namespace std;
    char ch;
    int count = 0;
    cout << "enter characters; enter # to quit:\n";
    cin >> ch;
    while (ch != '#') {
        cout << ch;
        ++count;
        cin >> ch;
    }
    cout << endl << count << " characters read\n";
    return 0;
}

输出

enter characters; enter # to quit:
see ken run#really fast
seekenrun
9 characters read

其中空格被忽略了,这是因为cin读取基本类型时会忽略空格和换行符,因为空格没有被回显,也没有被计入个数中。同时cin会有缓冲区的存在,当输入一系列字符后,并不会输入一个就发送给程序,而是放到了cin的缓冲区中,当输入enter时,缓冲区中的数据才被发送给程序。
如果想保留空格,制表符,换行符的输入,可以使用cin中的get函数

#include <iostream>

int main() {
    using namespace std;
    char ch;
    int count = 0;
    cout << "enter characters; enter # to quit:\n";
    cin.get(ch);
    while (ch != '#') {
        cout << ch;
        ++count;
        cin.get(ch);
    }
    cout << endl << count << " characters read\n";
    return 0;
}

输出

enter characters; enter # to quit:
Did you use a #a pencil?
Did you use a 
14 characters read

4.2 文件尾条件

如果输入来自于文件,可以使用检测文件尾(EOF)的技术来判断是否到达了文件的末尾。
常见的字符输入做法

cin.get(ch);
while (!cin.fail()) {
	...
	cin.get(ch);
}

可简化为

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

cin.get返回cin对象,istream中提供了一个将其对象转换成bool值的函数,这里会自动调用。文章来源地址https://www.toymoban.com/news/detail-706750.html

到了这里,关于《C++ Primer Plus》学习笔记——第5章 循环和文本输入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ Primer(第5版) 全书重点学习笔记

    目录 第12章 动态内存 12.1 动态内存与智能指针 12.1.6 weak_ptr 12.2 动态数组 12.2.1 new和数组 12.2.2  allocator类   12.1.6 weak_ptr weak_ptr是一种不控制所指向对象生存期的智能指针, 它指向由一个shared_ptr管理的对象。将一个weak ptr绑定到一个shared_ptr不会改变shared_ptr的引用计数。一旦最

    2024年02月13日
    浏览(50)
  • C++ Primer Plus 第8章

    1.内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存。如果程序在10个不同的地方调用同一个内联函数,则程序将包含该函数代码的10个副本。 2.注意,内联函数不能递归。 3.在声明引用时必须将其初始化,否则就会出现类似以下的报错: 4.引用一旦和某个变量

    2024年02月14日
    浏览(33)
  • C++ Primer Plus: 第10章(2)

    第10章编程题: (1) Account.h: Account.cpp: main.cpp: (2) Person.h: Person.cpp: main.cpp: (3) golf.h: golf.cpp: main.cpp: (4) Sales.h: Sales.cpp: main.cpp: (5) Stack.h: Stack.cpp: main.cpp: (6) Move.h: Move.cpp: main.cpp: (7) Plorg.h: Plorg.cpp: main.cpp: (8) List.h: List.cpp: main.cpp:

    2024年02月12日
    浏览(45)
  • 初识C语言 ——“C Primer Plus”

    各位CSDN的uu们你们好呀,今天,小雅兰的内容是读一本好书,这一本书的名字就叫做《C Primer Plus》,那么,又回到了我们的初识C语言阶段啦,保证零基础都能看懂噢,下面,让我们进入C语言的世界吧 C语言的起源 选择C语言的理由 C语言的应用范围 计算机能做什么 高级计算

    2023年04月15日
    浏览(35)
  • 【C++】C++ primer plus第二章练习题

    c++程序的模块叫什么? 函数。 下面的预处理器编译指令是做什么用的? 包含头文件,将iostream文件的内容添加·到代码中 下面的语句是做什么用的? using namespace std; using是预编译器指令,让其使用std命名空间 什么语句可以用来打印短语“Hello, world”,然后开始新的一行? s

    2024年02月06日
    浏览(52)
  • C++ primer plus第七章编程练习答案

    1.编写一个程序,不断要求用户输入两个数,直到其中的一个为 0。对于每两个数,程序将使用一个南数来计算它们的调和平均数,并将结果返回给 main(),而后者将报告结果。调和平均数指的是倒数平均值的倒数,计算公式如下: 调和平均数=2.0*xy/(x + y) 2.编写一个程序,要求用

    2024年02月10日
    浏览(39)
  • C++ Primer Plus第五章编程练习答案

    答案仅供参考,实际运行效果取决于运行平台和运行软件 1.编写一个要求用户输入两个整数的程序。该程序将计算并输出这两个整数之间包括这两个整数)所有整数的和。这里假设先输入较小的整数。例如,如果用户输入的是2和则程序将出29之间所有整数的和为44 2.使用array对

    2024年02月09日
    浏览(52)
  • C++ Primer Plus第二章编程练习答案

    答案仅供参考,实际运行效果取决于运行平台和运行软件 1.编写一个C++程序,它显示您的姓名和地址。 2.编写一个C程序它要求用户输入一个以 long 为单位的距离,然后将它转换为码(- ng等于220码) 3.编写1个C++程序它使用3个用户定义的函数(括mai()),并生成下面的输出Three blind

    2024年02月09日
    浏览(55)
  • 【CPP_Primer_Plus】C++ IDE推荐

    C++编译器推荐 windows 推荐 Resharper++插件 vcpkg 功能介绍 编辑器 Visual Studio 的编辑器具有出色的代码补全功能、语法突出显示、快速信息提示、附带代码修复建议的错误和警告。 IntelliSense 比 IntelliCode(内置于编辑器中的 AI 工具) 调试器 顶部的绿色运行按钮可启动调试程序。

    2024年02月09日
    浏览(43)
  • C++ Primer(读书笔记)

    C++源文件通常以.cc、.cxx、.cpp、.cp、.C作为后缀来命名 C++语言未定义输入输出语句,而是提供了一个全面的标准库来提供IO机制,对应 iostream、fstream、sstream std::cout\\\"Enter Two Numbers\\\"std::endl;。这条语句执行了一个表达式,在C++中,一个表达式产生一个计算结果,它由一个或多个

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包