**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
18小时前关门了。
Improve this question
我创建了一个类,在其中定义字符串和整数数据类型的成员变量。
当为一个新对象调用该函数时,我键入字符串值,按Enter键,剩下的所有变量都被赋予某个默认值,然后我的程序结束。
我不知道如何阻止它刚刚结束,并让我键入每个字符串值。
下面是我的代码的副本:
#include <iostream> //Header file needed to do inputs and outputs
#include <iomanip> //Header file needed to use setw
#include <math.h> //Header file needed to use power function
using namespace std;
class MovieData
{
private:
string title, director;
int year, runTime;
public:
void setInfo()
{
cout << "Movie title: ";
cin >> title;
cout << "Diector: ";
cin >> director;
cout << "Year: ";
cin >> year;
cout << "Runnign Time: ";
runTime;
}
void displayInfo ()
{
cout << "Movie title " << title << endl;
cout << "Director " << director << endl;
cout << "Year " << year << endl;
cout << "Run Time " << runTime << endl;
}
};
int main() {
MovieData movie1, movie2;
movie1.setInfo();
movie2.setInfo();
movie1.displayInfo();
movie2.displayInfo();
return 0;
}
我试着将字符串变量定义为c-string,也就是字符数组,看看这是否有助于解决问题,但结果是一样的。
2条答案
按热度按时间svmlkihl1#
更改此行
到
k5hmc34c2#
在其他注解和答案中指出了一些问题,但主要问题是这段代码:
在字符串上使用
>>
只能读取一个**单词,所以如果你输入Lord of the Rings
,那么title
将等于"Lord"
,director
将等于"of"
,等等。如果你想阅读整行文本,那么使用
std::getline()
:当你开始使用
getline()
时,阅读(并理解)这篇文章是非常重要的:Why does std::getline() skip input after a formatted extraction?