我一直在为我的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;
}
我一直遇到一个错误,指出找不到匹配的重载函数,但正如你可以看到我在主类和标题之间使用相同的结构,并且名称工作正常。
答案 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;
}