字符串不节省空格?

c4k*_*3ss -1 c++ c++17

我正在做一些你必须输入你的名字的东西,但我的字符串没有保存空格,为什么?

#include <iostream>
using namespace std;
string name;
int main()
{
  cout<<"<System>: Please enter your name"<<endl;
  cin>>name;
  cout<<name;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我进入了:

测试123

我得到了:

测试

asm*_*mmo 5

std::cin如果您想使用整行,则插入运算符仅将第一个字符串(在任何空格之前)插入到字符串中std::getline()

#include <iostream>
using namespace std;
string name;
int main()
{
  cout<<"<System>: Please enter your name"<<endl;
  std::getline(std::cin, name);
  cout<<name;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

并看到为什么是“using namespace std;” 被认为是不好的做法?