class Message {
public:
void changeSubject(string);
string getSubject();
private:
string subject;
};
void Message::changeSubject (string subjecto) //change subject{
subject = subjecto;
}
string Message::getSubject () //return subject {
return subject;
}
int main ()
{
Message person;
string aboutwhat;
cout << "Enter subject" << endl;
getline(cin, aboutwhat);
person.changeSubject(aboutwhat);
cout << person.getSubject();
return 0;
}
以上不是完整的代码。现在的问题是它打印&#34;输入主题&#34;并结束该计划。为什么我没有被提示cin?
答案 0 :(得分:2)
您发布的代码有几个问题,无法编译。以下适用于我
// Include al necessary headers:
#include <iostream>
#include <string>
// Either qualify the namespace of `std::string`, `std::cin`, etc
// or place a using statement like follows
using namespace std;
class Message {
public:
void changeSubject(string);
string getSubject();
private:
string subject;
};
void Message::changeSubject (string subjecto) //change subject
{ // <<< You have hidden the opening brace after the comment above
subject = subjecto;
}
string Message::getSubject () //return subject
{ // <<< You have hidden the opening brace after the comment above
return subject;
}
int main ()
{
Message person;
string aboutwhat;
cout << "Enter subject" << endl;
getline(cin, aboutwhat);
person.changeSubject(aboutwhat);
cout << person.getSubject();
return 0;
}
请参阅工作示例here。
由于您已在问题中说明了&#34;这不是完整的代码&#34; ,我怀疑您在其他部分中有一些错误没有出现。
&#34;为什么我没有被提示cin?&#34;
可能的一种可能是您之前在cin
上有其他输入,这些输入无效且cin
进入fail()
状态。
为防止这种情况发生,您可以在cin.clear();
来电之前添加getline()
声明。
如果您接受输入,例如数字,你应该检查这样的有效性
int x;
do {
cout << "Enter a number please: "
if(cin >> x) {
break;
}
cout << "Not a valid number, try again." << endl;
cin.clear();
} while(true);
答案 1 :(得分:0)
由于您的上述代码看起来是正确的。 我建议你先让提示工作。 然后再添加更多代码。 我刚刚在自己的环境中测试了以下内容
#include <iostream>
#include <string>
main ()
{
std::string aboutwhat;
std::cout << "Enter subject" << std::endl;
std::getline (std::cin,aboutwhat);
std::cout << "Subject: " << aboutwhat << std::endl;
return 0;
}