Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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++;_C++_Arrays - Fatal编程技术网

C++ 使用用户输入c++;

C++ 使用用户输入c++;,c++,arrays,C++,Arrays,我希望有一个迷你函数,允许用户键入一组数字,并将每个数字动态分配到一个数组中。例如: int main() { int* x = NULL; int n, numbers; std::cin >> n; x = new int[n] for (int i=0;i<n;i++){ std::cin >> numbers; x[i] = numbers; } delete [] x; 用

我希望有一个迷你函数,允许用户键入一组数字,并将每个数字动态分配到一个数组中。例如:

int main()
{
    int* x = NULL;
    int n, numbers;
    std::cin >> n;
    x = new int[n]
    for (int i=0;i<n;i++){
        std::cin >> numbers;
        x[i] = numbers;
    }

delete [] x;
用户可以在此之后键入3个数字

3 1 2 3
我试图将值1、2、3存储到一个数组中,使其看起来像

[1, 2, 3]
但现在它存储为

[123]

反正我能解决这个问题?我是新的C++编程,所以我觉得有一个简单的解决办法,但我不知道如何…谢谢大家!

可以将数组的每个元素直接存储到x[i]中。不确定使用什么数字(我已经从x[I]分配了数字)

x是要删除的数组。还有一个缺失的
x=newint[x]
-这是打字错误吗

int main()
{
    int* x = NULL;
    int n, numbers;
    std::cin >> n;
    x = new int[n];
    for (int i=0;i<n;i++){
        std::cin >> x[i];
        numbers = x[i];
    }

delete [] x;
intmain()
{
int*x=NULL;
int n,数字;
标准:cin>>n;
x=新整数[n];
对于(int i=0;i>x[i];
数字=x[i];
}
删除[]x;

您可以使用
向量来代替:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int n;
    cin >> n;

    vector<int> v;
    for (int i = 0; i < n; ++i)
    {
        int val;
        cin >> val;

        v.push_back(val);
    }
}

为什么不动态创建数组?这样,用户就不必预先键入元素的数量:

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> vec;
    int x;
    while (cin >> x)
        vec.push_back(x);

    for (int y: vec)
        cout << y << ' ';
    cout << '\n';
}
#包括
#包括
使用名称空间std;
int main()
{
向量向量机;
int x;
而(cin>>x)
向量推回(x);
对于(整数y:vec)
cout

或者,在

intmain()
{
std::vector myvector{std::istream_迭代器(std::cin),std::istream_迭代器();
std::copy(myvector.begin()、myvector.end()、std::ostream_迭代器(std::cout,“\n”);
返回0;
}

使用cin时,您需要为每个条目按enter键。例如:1、2、,etc@Pedrom这是不正确的。它将其存储为[123]而不是[1,2,3]是什么意思?@ZacHowland不,这是正确的,您需要包含一个空白分隔符才能分隔项目。Enter键对我来说很有效,但空格就可以了too@Pedrom'您需要包含一个空白分隔符才能分隔这些项。'啊哈!这是要求的吗?“C++的向量负责为您分配内存。”正确,这就是为什么不需要询问向量的大小(
n
)。@JorenHeit这不是关于向量大小,而是关于用户想要输入的数字量。@FrançoisMoisan你为什么想知道?这就是
CTRL+D
(EOF)的内容是为了,对吗?@JorenHeit当然,但不清楚这是否是OP任务的要求(明确要求计数)或者他只是为了分配数组。@FrançoisMoisan当他显式分配数组时,我认为这是他的目的。无论如何,即使他以后需要计数,也可以很容易地从
std::vector
size()
member。无需麻烦用户。在第一个for循环中,我们可以有以下代码,“for(int i=0;i>x[i];}”
cout << "[";
for (int i = 0; i < v.size(); ++i)
{
    if (i != 0)
        cout << ",";
    cout << v[i];
}
cout << "]";
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> vec;
    int x;
    while (cin >> x)
        vec.push_back(x);

    for (int y: vec)
        cout << y << ' ';
    cout << '\n';
}
int main()
{
    int* x = NULL;
    int n, numbers;
    std::cin >> n;
    x = new int[n]; // need a semi-colon here
    for (int i=0;i<n;i++)
    {
        std::cin >> numbers;
        x[i] = numbers;
    }

    for (int j = 0; j < n; ++j)
    {
        std::cout << "x[" << j << "] = " << x[j] << std::endl;
    }

    delete [] x; // you mean x, not a

    return 0;
}
int main()
{
    std::vector<int> myvector;
    std::copy(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(), std::back_inserter(myvector));
    std::copy(myvector.begin(), myvector.end(), std::ostream_iterator<int>(std::cout, "\n"));
    return 0;
}
int main()
{
    std::vector<int> myvector{std::istream_iterator<int>(std::cin),  std::istream_iterator<int>()};
    std::copy(myvector.begin(), myvector.end(), std::ostream_iterator<int>(std::cout, "\n"));
    return 0;
}