#include <bits/stdc++.h>
using namespace std;
/*
char arr[6] = "abcde";
实际存储内容为 a b c d e \0
所以【】内填写6,而不是5
strlen(arr) 为5
string str = "abcde";
str.size()为5
cin >> : 读取数据
getline(cin,字符串变量,字符):读取一行数据
特殊情况:
读取一个基本数据类型和string类型
情况一:
输入:100 abcde
cin >> n;
getline(cin,str);
cout << n << endl;
cout << str << endl;
输出:100
abcde
因为getline()读取一行数据,所以100后面的空格也被读取了,这大概率不符合题意
情况二:
输入:100
abcde
cin >> n;
getline(cin,str);
cout << n << endl;
cout << str << endl;
输出:
100
因为getline()读取一行数据,100后面是换行符,所以直接读取了换行符,再后面就是下一行的事了,所以后面的字符串就接收不了。
解决方法
cin >> n;
// cin.ignore(); // 方法一:忽略换行符
// getchar(); // 方法二:读取中间多的字符
getline(cin,str);
cout << n << endl;
cout << str << endl;
最后的方法:舍弃getline()函数,用cin读入
cin >> n >> str; // 省事又方便
总结:遇到读取一个基本数据类型和string类型
直接用cin >> n >> str;读取数据。
这样既方便又省事。
*/
int main(){
int n;
string str;
cin >> n;
// cin.ignore();
// getchar();
getline(cin,str);
cout << n << endl;
cout << str << endl;
return 0;
}
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com