C ++中的基本字符串连接未正确输出[关闭]
Posted
技术标签:
【中文标题】C ++中的基本字符串连接未正确输出[关闭]【英文标题】:Basic string concatenation in C++ not outputting properly [closed] 【发布时间】: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”。
【问题讨论】:
【参考方案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++ 中的语句按顺序执行,一次一条语句,一旦执行,它们就是古老的历史。
【讨论】:
以上是关于C ++中的基本字符串连接未正确输出[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
当连接未正确关闭时,为啥使用 WAL 模式的 SQLite 数据库中的数据会丢失?