C+中的结构输入元素+; 我试图在C++ 14中实现一个结构。我制作了一个有3个int值的结构 struct mystruct{ int a; int b; int c; };
在我的主函数中,我用以下方式初始化结构数组:C+中的结构输入元素+; 我试图在C++ 14中实现一个结构。我制作了一个有3个int值的结构 struct mystruct{ int a; int b; int c; };,c++,arrays,structure,c++14,C++,Arrays,Structure,C++14,在我的主函数中,我用以下方式初始化结构数组: int main(){ mystruct X[] = {{1,2,3}, {4,5,6}}; . . } 我将把这个数组传递给一个函数,在那里我将对它执行一些操作。该功能可能类似于: int myfunc(mystruct X[]){ //do something } 如何使用cin将此数组的值作为用户输入,而不是硬编码(可能使用对象)?我不知道该怎么办 编辑:我希望这可以通过使用对象来实现,你可以为你的结构实现一
int main(){
mystruct X[] = {{1,2,3}, {4,5,6}};
.
.
}
我将把这个数组传递给一个函数,在那里我将对它执行一些操作。该功能可能类似于:
int myfunc(mystruct X[]){
//do something
}
如何使用cin
将此数组的值作为用户输入,而不是硬编码(可能使用对象)?我不知道该怎么办
编辑:我希望这可以通过使用对象来实现,你可以为你的
结构实现一个输入操作符。类似这样的方法会奏效:
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<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
std::向量arr;
对于(mystruct t;std::cin>>t;)
{
arr.推回(t);
}
myfunc(arr.data());//或者你可以更改签名
//函数接受向量
这完全取决于输入的结构:每行一个值,一个对象的所有三个值都在一行上,用空格分隔,或者其他方式。首先,你需要弄清楚你期望的输入格式是什么,然后你应该找到一个完整的,详细的信息,如何处理输入在你的C++书籍。这太宽了。你的代码和你的问题看起来不相关。C++中的“输入是一个MyStultMype元素的数组”可能不是一个逻辑上有意义的句子。“输入”不是任何东西的数组,也不是任何mystruct
的数组。这是一个字符流。你想让用户一个接一个地键入一个值,并且永不停止吗?是否希望用户在键入数据之前选择要输入多少数组元素?用户是每行输入三个值还是每行输入一个值?@TheDude我也可以使用向量。请详细说明(mystruct t;std::cin>>t;)
。我第一次看到这种语法time@decukor因为现在您已经为mystruct
定义了operator>
,所以可以使用循环读取它。基本上,每次迭代都会创建一个新的mystruct
,然后输入它的值。要终止循环,您需要输入EOF,或者输入必须以某种方式失败。这相当于:mystruct;while(std::cin>>t){arr.push_back(t)}
@Arnav Borborah。这对我来说是新的。谢谢你的帮助