在C++中读取带空格的字符串

Read string with spaces in C++

本文关键字:空格 字符串 读取 C++      更新时间:2023-10-16

在这个C++代码中:

#include<bits/stdc++.h>
using namespace std;
int main()
{
string S;
getline(cin,S);
cout<<S;
return 0;
}

它打印带有空格的字符串,例如:

输入:

abc def

输出:

abc def

然而,在这个代码中:

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
string S;
getline(cin,S);
cout<<S;
return 0;
}

它不打印任何输出,例如:

输入:

1
abc def

输出:

这怎么可能呢?请帮忙。我哪里错了?

您先读取一个数字,然后读取一行。仔细想想发生了什么,换行符不是数字的一部分。因此,如果输入是123换行符,则读取数字123,然后getline读取换行符。下一行的内容根本没有读过。