c++ - C++中结构的输入元素

标签 c++ arrays structure c++14

我正在尝试在 C++ 14 中实现一个结构。我创建了一个具有 3 个 int 值的结构

struct mystruct{
    int a;
    int b;
    int c;
};

在我的主函数中,我按以下方式初始化结构数组:

int main(){
    mystruct X[] = {{1,2,3}, {4,5,6}};
    .
    .
}

我会将这个数组传递给一个函数,我将在其中对其执行一些操作。该功能可能是这样的:

int myfunc(mystruct X[]){
    //do something
}

如何使用 cin 将此数组的值作为用户输入,而不是对它们进行硬编码(可能使用对象)?我不确定该怎么做。

编辑:我希望这可以通过对象以某种方式实现

最佳答案

您可以为您的struct 实现一个输入运算符。这样的事情会起作用:

std::istream& operator>>(std::istream& is, mystruct& st)
{
    return is >> st.a >> st.b >> st.c;
}

现在您可以像这样从 mystruct 中读入:

mystruct t;
std::cin >> t;

(注意上面的函数不处理错误)

现在将这些新结构添加到数组中可以非常简单地通过使用循环来完成。 (我建议在这里使用 std::vector)。

这是一个使用 std::vector 的例子:

std::vector<mystruct> arr;

for (mystruct t; std::cin >> t;)
{
    arr.push_back(t);
}

myfunc(arr.data()); // Or you could change the signature of the 
                    // function to accept a vector

关于c++ - C++中结构的输入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48733939/

相关文章:

c++ - Qt添加 "action"到动态添加的QWidget

c++ - 模板是否为同一类型的参数实例化多次?

c++ - 当右值不实现 move 时,在具有 move 语义的容器上实现 insert()

ruby - 在字符串数组中查找字符串的最快方法

c - 发送结构地址时出现段错误

c++ - WinAPI 设备通知 - 未进入消息循环

python - 将值分配给 numpy 数组中的位置而不修改数组

Array 方法中的 Javascript 循环

python - Django,项目结构

c - 错误 126 : Inconsistent structure definition 'unnamed' in C? 的错误是什么