c++ - 如何在以空格分隔的行中获得无限输入?

标签 c++

我想做的是重载我的 Book 类的 >> 运算符,以便在一行中从用户那里获取未知数量的整数。之后,我需要创建一个数组。

我试过这个:

istream& operator>>( istream& in, Book& b )
{
    int x;

    delete[] b.editionYears;
    b.editionNo = 0;
    b.editionYears = new int[0];

    cin>>x;

    b.addEdition(x);

    return in;
}

我称之为

cout << A << endl;

在测试类中,其中 A 是 Book 对象。

我试过这个,但在这里,当用户输入类似“1 2 3 4”的内容时,它只删除数组并向其添加 1,在第二次调用中它再次删除 1 并添加 2。

我期望的是,如果用户输入“1 2 3 4”,它应该删除 editionYears 数组,重新创建并向其中添加 1,2,3,4。

那我该怎么做呢?感谢您的帮助。

最佳答案

您的问题出在 cin 的使用上。尝试使用 std::getline .

这个其他答案可能会有所帮助 https://stackoverflow.com/a/5838803/5355195

关于c++ - 如何在以空格分隔的行中获得无限输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55440380/

相关文章:

c++ - 如何将一个类中声明的类的数据类型访问到另一个类(都在不同的翻译单元中)?

c++ - 模板基类中的重载运算符

c++ - Windows Shell Extension 不提供确切的文件路径

c++ - 简单的套接字程序偶尔会失败

c++ - 如何使用 Clang 查找变量声明?

c++ - 使用 libxml2 (c++) 创建字符串

c++ - 如何使用 C++ 和 WinAPI 检查 Web 浏览器是否正在运行?

python - 从部分 google protobuf 消息中检索信息

c++ - 嵌套模板类方法语法

c++ - 如何创建共享库特定的单例实例