当前位置: 首页 > 知识库问答 >
问题:

如何从包含c字符串、int和float的键盘大量读取结构变量?

黄淇
2023-03-14
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <climits>
#include <cfloat>
#include <cstring>
#include <string>
using namespace std;

struct news
{
    char a[10];
    int n;
    float r;
};

int main()
{
    news k;
    cin >> k;
    cout << k.a << endl;
    cout << k.n << endl;
    cout << k.r << endl;
    return 0;
}

它给了我一个错误的全屏幕。有人知道如何解决这个问题吗?非常感谢。

测验cc:In函数“int main()”:测试。抄送:20:错误:与“运算符”不匹配

共有2个答案

宓茂才
2023-03-14

这不会自动发生,因为cin不知道输入的格式,也不知道输入应该如何分配给新闻对象的成员。您必须分别向其每个成员阅读:

cin >> k.a >> k.n >> k.r;

您也可以提供一个操作符

istream& operator>>(istream& in, news& cPoint)
{
  in >> k.a >> k.n >> k.r;
  return in;
}
周玺
2023-03-14

创建朋友函数重载:

friend std::istream& operator >>(std::istream& is, news const& n)
{
    return in >> n.a >> n.n >> n.r;
}

以下是您的程序的外观:

#include <iostream>

struct news
{
    char a[10];
    int n;
    float r;

    friend std::istream& operator >>(std::istream& is, news& n)
    {
        return is >> n.a >> n.n >> n.r;
    }
};

int main()
{
    news k;

    std::cin >> k;
    std::cout << k.a << std::endl;
    std::cout << k.n << std::endl;
    std::cout << k.r << std::endl;
}

现场演示

 类似资料:
  • 当我使用opencsv读取csv文件时,它在字符串末尾遇到\时无法正常工作。它使字符串的"部分,而不是'\',因为我想。我想一定有什么方法可以添加另一个\,让它转义\字符?无需手动编辑csv文件。我找过了,但什么也没找到。 为了澄清我的问题,看起来是这样的: csv文件 我的代码看起来像这样(不是真的,但它显示了我的问题): 我想把它解析成一个String[],每行有4个元素,但是最后一行只解析成

  • 问题内容: 当我使用opencsv读取csv文件时,在字符串末尾遇到“ \”时,它无法正常工作。它使字符串的一部分成为“”,而不是我想要的“ \”。我猜必须使用某种方法来添加另一个“ \”以使其转义为“ \”字符吗?而 无需 手动编辑csv文件。我已搜索但未找到任何内容。 为了澄清我的问题,它看起来像这样: CSV文件 我的代码看起来像这样(不是真的,但是它显示了我的问题): 我希望将此解析为每行

  • 主要内容:输入单个字符,输入字符串,总结C语言有多个函数可以从键盘获得用户输入,它们分别是: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。 getchar()、getche()、getch():这三个函数都用于输入单个字符。 gets():获取一行数据,并作为字符串处理。 scanf() 是最灵活、最复杂、最常用的输入函数,上节我们已经进行了讲解,本节接着讲解剩下的函数,也就是字符输入函数和字符串

  • 例如: 我需要将所有的“id”变量从“dataList”输入“idList”。诸如此类 但如何以更好的方式对此进行优化? 我试图创建本地列表,用ID填充它,然后将其交给“idList”。但我认为这种方法并没有得到优化

  • 与结构向量相比,我有一个过滤掉字符串输入vec的工作解决方案。但是,我的代码似乎很复杂,我尝试使用iter::filter(https://doc.rust-lang.org/stable/std/iter/struct.Filter.html)简化代码。这引起了问题,因为迭代器返回的值是引用,不能直接使用。似乎我对iter的理解以及在结构向量中可以做什么需要刷新。下面是工作的简化过滤代码: 有没

  • 问题内容: 在Python中,如何将像这样的数字字符串解析为对应的浮点值?或者将字符串解析为整数31? 我只想知道如何将解析为,以及(分别)将解析为。 问题答案: