C++ for循环中的cin.getline()快把我累死了
我现在正在练习如何使用C++ for循环中的cin.getline()快把我累死了,c++,cin,C++,Cin,我现在正在练习如何使用cin。我尝试在for循环中使用cin.getline()来获得连续的输入。我想做的是: 使用cin,获取整数NUM和LEN 在for循环中使用cin,获取不超过LEN个字符的NUM行 我试着这样编码: #include<iostream> using namespace std; int main(void){ char arr[100][100]; int i, j; int NUM, LEN; cout <&l
cin
。我尝试在for循环中使用cin.getline()
来获得连续的输入。我想做的是:
cin
,获取整数NUM和LENcin
,获取不超过LEN个字符的NUM行#include<iostream>
using namespace std;
int main(void){
char arr[100][100];
int i, j;
int NUM, LEN;
cout << "Input the NUM: " << endl;
cin >> NUM;
cout << "Input the LEN: " << endl;
cin >> LEN;
cout << endl;
cin.ignore();
for(i=0;i<NUM;i++){
cin.getline(arr[i],LEN+1);
}
cout << "Your Input: ";
for(i=0;i<NUM;i++){
cout << "row" << i << " :: " << arr[i] << endl;
}
}
#包括
使用名称空间std;
内部主(空){
字符arr[100][100];
int i,j;
int NUM,LEN;
库特数;
库特伦;
cout这个怎么样:
int main(void){
char arr[100][100];
int i, j;
int NUM, LEN;
cout << "Input the NUM: " << endl;
cin >> NUM;
cout << "Input the LEN: " << endl;
cin >> LEN;
cout << endl;
cin.ignore();
char temp[100];
for(i=0;i<NUM;i++){
cin.getline(temp,100);
strncpy(arr[i],temp,LEN);
arr[i][LEN]= 0;
}
cout << "Your Input: ";
for(i=0;i<NUM;i++){
cout << "row" << i << " :: " << arr[i] << endl;
}
}
int main(无效){
字符arr[100][100];
int i,j;
int NUM,LEN;
库特数;
库特伦;
你为什么不做cin.getline()并阅读所有内容,然后切掉LEN的每一个字符?太好了!你真的像个天使,我没想到会有这么快的反应…我真的很感激。但我可以问你更多吗?1.我仍然不确定你的答案如何。嗯…我用了cin.getline()在我的代码中也是如此,但是缓冲区中的多余字符把它搞砸了。cin.getline()在代码中工作得很好吗,因为你读了100个字符?虽然我喜欢你的方式,但是没有任何方法可以在每次cin.getline()之后刷新缓冲区(以便擦除多余的字符)?2.arr[I][LEN LEN=0;意思是?只是为了确保它是字符串的结尾?说起来很荒谬,但即使有一天我成为一名优秀的程序员,我怎么能忘记你:DHi再次,我尝试按照我的版本工作的顺序回答,因为我读了100个字符?是的,更准确地说,它工作是因为它尝试读取尽可能多的字符,并读取所有输入的字符用户,但如果用户键入101个字符,我们将再次出现错误。我不知道是否可以从cin直接刷新所有超过固定限制的字符,但如果您发现,我很乐意知道。最后,arr[I][LEN]=0是必需的,因为否则数据可能会变脏,cin.getline()将0放在接收字符数组的末尾,但当我们从接收的字符中删除除数据外的数据时,我们也会删除getline()放在那里的0,因此我们必须再次放置0。