图三:比如输入n=4时,我只能输入的字符串数为3而非4
(第一次无法输入,为何?)
(为何当i=0时,getline无法输入,当但i>0时就可以?)
这是部分原码:
int count_p = 0, count_t = 0, count_a = 0, pos_p = 0, pos_t = 0;
int i;
char** s;
cout << "请输入字符串数" << endl;
int n;
cin >> n;
s = new char* [n];
for (i = 0; i < n; i++)
{
s[i] = new char[11];
cin.getline(s[i], 11);
}
在cin.getline语句前加了getchar(),便解决了该问题,其实在输入a值时按了回车键, cin.getline读入了回车,于是回车被当作参数传递给了函数,将getchar()加到其前便可解决问题。
#include <iostream>
#include<malloc.h>
using namespace std;
int main() {
int count_p = 0, count_t = 0, count_a = 0, pos_p = 0, pos_t = 0;
int i;
char** s;
cout << "请输入字符串数" << endl;
int n;
cin >> n;
s = new char* [n];
getchar();
for (i = 0; i < n; i++)
{
s[i] = new char[11];
cin.getline(s[i], 11);
}
}
上次输入的回车被getline读进去了
int n;
cin >> n;
fflush(stdin); //加上这一句,
s = new char *[n];