每当我使用cin并在字符串中使用空格时,为什么它会跳过整个内容?

用户名

我制作了一个程序,应该将输入内容打印出来。然后运行一个简单的加法运算,但是当我在输入中使用空格时,它将跳过加法运算。我不知道问题是什么。

这是班级的东西

#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;   
}
尼古拉斯·M

我建议您将职责划分一些不同。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();

通常,将标准输入作为类的接口的一部分读取是个坏主意,因为将来很难重用该类(例如,使用从文件而不是从人那里获取输入的程序)。安慰)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

javascript中的string是不可变的,但是当我们在字符串中使用let时,它会变得可变,

为什么当我输入一个空字符串('nothing here')时它会忽略我的while条件?

为什么每当我尝试执行 F 字符串时我的代码都不起作用

当我使用numpy genfromtxt函数将字符串转换为整数时,为什么对于我要转换的内容全为0

为什么当我在 C 中使用 for 循环时,它会无限多次打印我的文本?(我是初学者)

每当我单击连接元掩码按钮时,为什么它会连接 coinbase 钱包?

当我使用jquery.ajax到PHP脚本中发布时,为什么整数变成字符串

当我使用变量而不是整数或字符串时,为什么初始化日期对象失败?

当我尝试反转字符串中的单词时,为什么我的代码不打印任何内容

为什么当我使用熊猫从网站上刮取表格时,它会跳过中间的列,而只打印前2个和后2个

为什么当我将字符串转换为二进制时,它会丢失前零个吗?

为什么用Go接口{}作为参数,当我用字符串调用func时,它会强制转换一个alloc / ns吗?

为什么代码总是打印True。每当我检查是否相等但不打印给定的字符串时总是打印布尔值

当我尝试在newtonsoft.json中使用Jsonserialize时,将null返回给字符串

为什么每当我使用“-=”代替“+=”时python都会给出错误消息?

为什么当我使用计数结果是空字符串?

为什么我在C中创建的新字符串使用╠而不是空格?

为什么我不能使用Google Apps脚本对带空格的字符串执行.split()?

将带空格的字符串传递到bash脚本并在字符串串联中使用

为什么我不能在输入中使用空格字符?

为什么当我在单独的函数中使用$(this)并在.each()中调用它时不起作用?

当我在DataFrame.agg()的func参数中使用字符串时,我怎么知道正在调用什么函数?

当我遵循的每个示例都使用相同的转换时,为什么我无法将字符串转换为 Float 而不出现致命异常?

为什么当我在 Series 中使用 dtype=str 作为参数并将数据作为字符串和浮点数列表传递时,它不显示错误。?

当我们将 cin 声明为 int 并在 cout 中使用 print cin 从 cin 获取输入时会发生什么?

为什么当我从数据库中提取内容时,它会自动添加新行?

为什么扫描仪对象在 for 循环中使用 nextInt() 函数后会跳过字符串输入 nextLine()?

当我使用init(contentsOfFile :)创建一个字符串时,为什么还有一个额外的换行符?

当我使用字符串和数组(尤其是大数据)时,为什么linq搜索在效率上有巨大差异?