• 3.Strings 字符串如何工作?----对缓冲区的理解。


    修改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 0;
    }

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

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

    在这个例子中,我们的变量名为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,标准库来刷新缓冲区。

  • 相关阅读:
    APUE_1.7ErrorHandling Figure1.8Demonstrate strerror and perror
    4-7 使用tf.train.slice_input_producer读取列表样本
    Ubuntu16.4+github+pycharm
    4-5 Cifar10数据集解析
    4-6 TF之TFRecord数据打包案例
    matlab如何创建一个视频预览
    Alpha
    如何使用 declare-styleable
    LayoutParams使用
    桌面快捷方式的问题-创建-删除-判断
  • 原文地址:https://www.cnblogs.com/billxyd/p/7021565.html
Copyright © 2020-2023  润新知