【问题标题】:Basic string concatenation in C++ not outputting properly [closed]C ++中的基本字符串连接未正确输出[关闭]
【发布时间】:2021-12-05 01:45:47
【问题描述】:

我在使用 Visual Studio 进行 C++ 连接时遇到问题。我尝试了不同的 cout 变体,但无济于事。

#include "std_lib_facilities.h"

int main()
{
    cout << "Please enter last name and age\n";
string first_name;
string last_name;
string l2 = "Mr. " + last_name;
int age;
cin >> last_name >> age; 
cout << "Hello, "  << l2 << age << "\n";
}

谁能帮助解释这里发生了什么阻止它显示“你好,姓氏年龄先生”?当前输出只显示“Hello, Mr. 22”。

【问题讨论】:

    标签: c++ c++11 visual-c++ c++14


    【解决方案1】:
    string last_name;
    

    这声明了一个last_name,一个字符串。它没有初始化为任何东西,所以这是一个空字符串。之后,执行下一条语句:

    string l2 = "Mr. " + last_name;
    

    这声明了l2,并通过将“先生”与last_name 中的任何内容组合起来进行初始化。 last_name 中没有任何内容,它是一个空字符串。所以,l2 包含“先生”,仅此而已,这就是您看到的输出。

    稍后:

     cin >> last_name >> age; 
    

    这确实从std::cin 读取last_name。无论如何,这绝对没有区别。仅仅因为这个语句最终初始化了last_name,它对之前使用的last_name 没有任何影响。当它用于初始化l2 时它是空的,并且仅仅因为它现在被初始化为其他东西并不意味着l2 会以这种方式重新初始化。 C++ 不能以这种方式工作。 C++ 中的语句按顺序执行,一次一条语句,一旦执行,它们就是古老的历史。

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 2011-04-01
      • 2015-02-25
      • 2013-05-11
      相关资源
      最近更新 更多