输出字符串时缺少第一个字符

时间:2015-12-09 10:02:34

标签: c++ string codeblocks

当我尝试将名称输入到数组时,其输出缺少第一个字符:johnohn。我使用了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;
}

2 个答案:

答案 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;