C++实现输入带空格的字符串
一、问题描述
如果我们直接采用cin>>str的形式,遇到空格就会默认当前字符串结束了,空格和空格后面的字符不能够输入,如下面的代码所示:
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main() {
int T = 0;
cout << "请输入要写入的字符串个数:" << endl;
cin >> T;
// 忽略第一行的换行符
cin.ignore();
string str;
vector<string>ve;
for (int i = 0; i < T; i++) {
cin >> str;
ve.push_back(str);
}
cout << "您写入的字符串为:" << endl;
for (int i = 0; i < T; i++)
{
cout << ve[i] << endl;
}
return 0;
}
结果:

二、问题解决
我们只需要将cin>>str改为getline(cin,str)即可,同时为了防止上面的输入留下的换行符的影响,可以写入cin.ignore()。
代码
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main() {
int T = 0;
cout << "请输入要写入的字符串个数:" << endl;
cin >> T;
// 忽略第一行的换行符
cin.ignore();
string str;
vector<string>ve;
for (int i = 0; i < T; i++) {
getline(cin,str);
ve.push_back(str);
}
cout << "您写入的字符串为:" << endl;
for (int i = 0; i < T; i++)
{
cout << ve[i] << endl;
}
return 0;
}
结果:
