当我尝试将名称输入到数组时,其输出缺少第一个字符:john
到ohn
。我使用了cin.ignore();
和cin.getline(name,30);
。但是当我删除cin.ignore();
时,它会在输入过程中产生问题。那么问题是什么?我使用了code::block
IDE。
以下是代码:
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
class love {
private:
char name[30];
public:
void input_name();
void output_name();
};
void love::input_name() {
cout<<"Input Name :";
cin.ignore();
cin.getline(name,30);
}
void love::output_name() {
cout<<name<<endl;
}
int main() {
love obj[10];
int n;
int i,j,k;
for (k=1;k>n;k++) {
}
cout<<"Input n student name : ";cin>>n;
for(i=0;i<n;i++) {
obj[i].input_name();
}
for(j=0;j<n;j++) {
obj[j].output_name();
}
return 0;
}
答案 0 :(得分:0)
你的爱情&#34;你不会有一个构造函数。类。 没有它,你无法正常地建构爱。
答案 1 :(得分:0)
如果在没有任何参数的情况下调用ignore,它将忽略第一个字符。 http://www.cplusplus.com/reference/istream/istream/ignore/
istream& ignore (streamsize n = 1, int delim = EOF);
在你的情况下,我会避免使用getline并忽略。 将其改为简单:
cin >> name;