C ++ getline不能使用int吗?

时间:2016-09-06 21:54:03

标签: c++ header int overloading

我一直在为我的C ++课程开展这个项目,我必须从用户那里获得一系列信息,包括用户出生年份和当前年份(我们还没有学习如何访问计算机和#39; s日期,因此必须手动检索)。我还处于相当早的阶段,而且我遇到了这个障碍,我似乎无法解决这个问题。

虽然我已经使用此过程轻松地使用自定义类来使名称系统工作,但我无法使其适用于年份值。我只能假设问题是年份是一个int而不是一个字符串,但我无法找到任何其他方法来使其工作。有人可以看一下这段代码并帮我弄清问题是什么?

主要课程:

@blogs =

Heartrate class:

#include <iostream>
#include <string>
#include "Heartrates.h"

using namespace std;

int main() {
    Heartrates myHeartrate;
        cout << "Please enter your name (First and Last): ";
        string yourName;
        getline (cin, yourName); 
        myHeartrate.setName(yourName);

cout << "\nPlease enter the current year: ";
int currentYear;
getline (cin, currentYear);
myHeartrate.setCyear(currentYear);


cout << "\nYou entered " << currentYear;
}

我一直遇到一个错误,指出找不到匹配的重载函数,但正如你可以看到我在主类和标题之间使用相同的结构,并且名称工作正常。

1 个答案:

答案 0 :(得分:0)

您尝试使用的std :: getline版本不接受int作为参数。有关您尝试呼叫的功能here,请参阅标记为2(C ++ 11)的功能。 std :: istringstream可以包含在sstream中。我会在最终的打印输出中添加一个std :: endl(或新行),以使其看起来更好。

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main() {
    Heartrates myHeartrate;
    cout << "Please enter your name (First and Last): ";

    // read line
    string line;
    getline (cin, line);
    // line is yourName 
    myHeartrate.setName(line);
    // read line, read int from line
    cout << "\nPlease enter the current year: ";
    int currentYear;
    getline (cin, line);
    std::istringstream ss(line);
    ss >> currentYear;
    myHeartrate.setCyear(currentYear);

    cout << "\nYou entered " << currentYear << endl;
    return 0;
}