修改Hello World程序向特定的人问好。

#include <iostream>
#include <string> int main()
{ std::string name;
std::cout << "What's your name? ";
std::cin >> name;
std::cout << "Hello " << name << "!" << std::endl; system("pause");
return ;
}

为了输入名字,我们得有一个地方存放名字。这个地方叫做变量。变量是具有名称的对象。反过来,一个对象是计算机的一个类型的内存的一部分。

如果我们希望使用一个变量,我们必须告诉变量的类型和名称。编译器很容易检测出变量名称拼写错误和变量类型错误。

在这个例子中,我们的变量名为name,其类型是std :: string。使用std ::意味着它后面的名称,字符串是标准库的一部分。std :: string有一个关联的头文件,即<string>,所以我们在我们的程序中添加了一个适当的#include指令。

通常,标准库把输出保存在称为缓冲区的内部数据结构中,该缓冲区用于优化输出操作。大多数系统花费大量时间将字符写入输出设备,而不管有多少字符要写入。为了避免响应于每个输出请求的写入开销,库使用缓冲区来累加要写入的字符,并且只有在必要时将其内容写入输出设备才能刷新缓冲区。通过这样做,它可以将多个输出操作组合成单个写入。

有三个事件导致系统刷新缓冲区。首先,缓冲区可能已满,在这种情况下,标准库将自动刷新缓冲区。其次,标准库可能被要求从标准输入流中读取。 在这种情况下,标准库将立即刷新输出缓冲区,而不必等待缓冲区变满。第三,人工手动刷新缓冲区。

当程序运行到 std::cout << "What's your name? "; What's your name?被写入到缓冲区。接下来,我们用cin读取,这个读取刷新了缓冲区,我们就能看到What's your name?的提示。我们最后一个操作 std::cout << "Hello " << name << "!" << std::endl,开始都被写入到缓冲区,当程序运行到std::endl,标准库来刷新缓冲区。

3.Strings 字符串如何工作?----对缓冲区的理解。的更多相关文章

  1. Windows Azure 网站:应用程序字符串和连接字符串的工作原理

    编辑人员注释:本文章由 Windows Azure 网站团队的首席项目经理 Stefan Schackow 撰写. Windows Azure 网站上有一个方便的功能,即开发人员可将 Azure 中的 ...

  2. C++编程对缓冲区的理解

    本文转自:http://www.vckbase.com/index.php/wv/1592 什么是缓冲区 缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空 ...

  3. C++编程中对缓冲区的理解(OS默认4096大小的缓冲区,有例子,很形象)

    什么是缓冲区缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区.缓冲区根据其对应的是输入设备还是输出 ...

  4. 【C# IO 操作 】编程对缓冲区的理解

      什么是缓冲区缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区.缓冲区根据其对应的是输入设备还是 ...

  5. 安全的字符串拷贝strcpy_s的实现与理解

    在C标准库中提供了字符串拷贝函数strcpy,而微软则为为它提供了一个更安全的版本strcpy_s,其函数原型为 errno_t __cdecl strcpy_s( char* _Destinatio ...

  6. [LeetCode] Add Strings 字符串相加

    Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2. ...

  7. [LeetCode] Multiply Strings 字符串相乘

    Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...

  8. Codeforces Round #358 (Div. 2) D. Alyona and Strings 字符串dp

    题目链接: 题目 D. Alyona and Strings time limit per test2 seconds memory limit per test256 megabytes input ...

  9. 【LeetCode每天一题】Multiply Strings(字符串乘法)

    Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and ...

随机推荐

  1. 中 varStatus的属性简介

    varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性.就拿varStatus="status"来说,事实上定义了一个status ...

  2. 使用JspSmart文件上传

    index.html [html] view plaincopy     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transition ...

  3. LOJ#2351. 「JOI 2018 Final」毒蛇越狱

    LOJ#2351. 「JOI 2018 Final」毒蛇越狱 https://loj.ac/problem/2351 分析: 首先有\(2^{|?|}\)的暴力非常好做. 观察到\(min(|1|,| ...

  4. mysql中OPTIMIZE TABLE的作用及使用

    来看看手册中关于 OPTIMIZE 的描述: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... 如果您已经删除 ...

  5. Linux IO 监控与深入分析

    https://jaminzhang.github.io/os/Linux-IO-Monitoring-and-Deep-Analysis/ Linux IO 监控与深入分析 引言 接昨天电话面试,面 ...

  6. javascript中原型学习

    学习地址:http://www.cnblogs.com/wangfupeng1988/tag/%E5%8E%9F%E5%9E%8B/

  7. jquery 实现点击颜色切换

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. fuser命令

    fuser命令 http://blog.itpub.net/27573546/viewspace-765240/

  9. FPGA中的“门”

    逻辑门 在ASIC的世界里,衡量器件容量的常用标准是等效门.这是因为不同的厂商在单元库里提供了不同的功能模块,而每个功能模块的实现都要求不同数量的晶体管.这样在两个器件之间比较容量和复杂度就很困难. ...

  10. Winform判断是否已启动

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...