修改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. BZOJ4260,LOJ10051 Nikitosh 和异或

    题意 给定一个含 \(N\) 个元素的数组 \(A\),下标从 \(1\) 开始.请找出下面式子的最大值:\((A[l_1]\bigoplus A[l_1+1]\bigoplus -\bigoplus ...

  2. OpenWRT mt7620n 系统升级引起的问题

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianguozheng/article/details/27237175 OpenWRT系统升级採用 ...

  3. subline自定义快捷键

    由于感觉原始subline的运行快捷键ctrl+b不是很方便,尝试修改,方法如下: 打开首选项 --> 快捷键设置 Key Bindings -Default //这个表示系统默认的快捷键.Ke ...

  4. Fineui往框架添加选项卡的方法

    在主页F.ready(function (){...}方法中添加js代码 // 添加示例标签页 window.addExampleTab = function (id, url, text, icon ...

  5. Mongodb时间问题

    Java保存到mongodb当前时间,使用RoboMongo查看数据显示时间比当前时间少8个小时,这是客户端的问题. MongoDB中的Date类型数据只保存绝对时间值,不保存时区信息,因此“显示的时 ...

  6. Linux内核中常见内存分配函数

    1.      原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分 ...

  7. C# 读取INI

    虽然微软早已经建议在WINDOWS中用注册表代替INI文件,但是在实际应用中,INI文件仍然有用武之地,尤其现在绿色软件的流行,越来越多的程序将自己的一些配置信息保存到了INI文件中. INI文件是文 ...

  8. Linux Restricted Shell Bypass

    Author: @n4ckhcker & @h4d3sw0rm Introduction Hello, so first of all let’s explain what is a rest ...

  9. html5测试总结

    1.因为html5不兼容IE78,所以在PC上使用并非十分光.pc上IE还是占主流 2.html5主要用在移动终端 3.html5短期内因为自身的缺陷,用户体验无法达到原生app的体验.如:html5 ...

  10. Wireshark捕获非加密的数据包

    启动监听模式 root@sch01ar:~# airmon-ng start wlan0 启动Wireshark工具 root@sch01ar:~# wireshark 选择接口,这里选择wlan0m ...