Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的结构输入元素+; 我试图在C++ 14中实现一个结构。我制作了一个有3个int值的结构 struct mystruct{ int a; int b; int c; };_C++_Arrays_Structure_C++14 - Fatal编程技术网

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。这对我来说是新的。谢谢你的帮助