我制作了一个应该输入打印的程序。然后运行一个简单的附加功能,但是当我在输入中使用空格时,它会跳过添加。我不知道问题是什么。
这是课堂内容
#include <iostream>
#include <string>
using namespace std;
class Cheese {
private:
string name;
public:
void setName(string x){
cin >> x;
x = name;
}
string getName(){
return name;
}
void print(){
cout << name << endl;
}
};
这是主要的东西
int main()
{
string h;
Cheese hole;
hole.setName(h);
hole.getName();
hole.print();
这部分被忽略而不让我输入
int x = 5;
int y = 16;
cout << x+y;
num(x);
int a;
int b;
int c;
cout << "Type in a number and press enter.";
cin >> a;
cout << "Repeat.";
cin >> b;
c = a+b;
cout << c << endl;
if(c <= 21){
cout << "Good job!";
}
else {
cout << "You fail!";
}
return 0;
}
答案 0 :(得分:0)
我建议你把责任分开一点点。 Cheese
类的setName
函数应该只接受一个字符串并将实例的成员变量设置为给定的参数。
然后,您的程序可以从标准输入读取并填充main
中的字符串,并将该字符串传递给setName
。
更具体:
class Cheese {
private:
string name;
public:
void setName(const string& x){
// change this code to set the 'name' member variable
}
[...]
};
主要成为:
int main()
{
string h;
Cheese hole;
std::string input_name;
cout << "Type a name and press enter.";
cin >> input_name; // Will read up to first whitespace character.
hole.setName(input_name);
hole.getName(); // this is a no-op: compiler may warn of unused return value
hole.print();
通常,将标准输入作为类接口的一部分读取是一个坏主意,因为它使得将来很难重用该类(例如,使用从文件而不是从文件中获取输入的程序)人在控制台。)
答案 1 :(得分:0)
传递给cin输入流的输入会跳过任何空格,制表符空格或换行符。如果您想输入字符串,则可以使用cin.getline(string s)
。白色空间传递到下一个等待的cin之后的输入,因为下一个cin接受整数并且它获得一个跳过它的字符串。因此,当输入带有空格的字符串时,程序会跳过剩余的部分。