c++ 如何对数组使用cin

jm81lzqq  于 2023-08-09  发布在  其他
关注(0)|答案(7)|浏览(138)

当我运行这段代码时

#include <iostream>
#include <string>
#include <math.h>
using namespace std;

int main() {

    int Array[100];

    cin >> Array;

    return 0;
}

字符串
我在cin行得到以下错误消息:
二进制表达式(“std::__1::istream”(又名“basic_istream”)和“int *”)的操作数无效
为什么不能直接输入数组?我该如何解决这个问题?

hzbexzde

hzbexzde1#

对于更现代的C++方法:

#include <algorithm>

字符串
并做

std::for_each(std::begin(Array), std::end(Array), [](auto& elem) { cin >> elem; });


或者你可以把它作为operator>> overload

#include <iostream>
#include <algorithm>

template<typename T, size_t Size>
std::istream& operator>>(std::istream& in, T (&arr)[Size])
{
    std::for_each(std::begin(arr), std::end(arr), [&in](auto& elem) {
        in >> elem;
    });

    return in;
}

int main() {

    int Array[100] = { 0 };

    std::cin >> Array;

    return 0;
}

wvmv3b1j

wvmv3b1j2#

你应该循环数组元素:

for(int i=0; i<100; i++){
  cout<<"Insert element "<<i<<": ";
  cin>>Array[i];
}

字符串
但是,尽量不要使用大写的变量名,因为它们通常用于命名对象/类和其他东西

mwyxok5s

mwyxok5s3#

可以写一个>>的重载来读入一个c风格的数组,然后main就可以正常工作了。

template <typename T, std::size_t N>
std::istream & operator>>(std::istream & is, T (&arr)[N])
{
    std::copy_n(std::istream_iterator<T>(is), N, arr);
    return is;
}

字符串

iyfjxgzm

iyfjxgzm4#

你需要遍历每个数组元素来获取值,所以你应该使用迭代器或循环(for,while或do while)。没有直接的方法来获得整个数组的值。
让我试着进一步解释一下,数组只是一个连续的内存,可以保存定义类型的元素数量。没有办法知道在运行时需要存储的元素的数量,或者简单地说,没有办法知道一个数组有多大,它可以包含多少元素。这就是为什么数组溢出是非常常见的问题,因为数组没有结束分隔符,并且使用数组指针可以尽可能长地使用。希望这能帮助你更好地理解。

x4shl7ld

x4shl7ld5#

你应该使用循环来输入num by num

#include <iostream>

int main() {
    int Array[100];
    std::cout<<"enter Numbers Here:"<<endl;
    for (int i=0; i<100; i++)
       std::cin>>Array[i];
    return 0;
}

字符串

r7knjye2

r7knjye26#

如果不重载>>运算符,就不可能cin一个数组。但是,您可以按以下方式声明它

#include <iostream>
#include <string>
#include <math.h>

using namespace std;

int main() {

    const int size = 100;

    int array[size];

    for (int i = 0; i < size; i++) {
        cout << "Enter number #" << i+1 << ": ";
        cin >> array[i];
    }

    return 0;
}

字符串

8wtpewkr

8wtpewkr7#

for (int i = 0; i < n; ++i) {
    std::cin >> arr[i];
}

字符串
以这种方式获取数组输入。

相关问题