c ++将cin值存储到任何类型的数组中

时间:2020-02-12 02:38:38

标签: c++ arrays cin

嗨,这是我的第一篇文章;但不是我第一次访问此网站;我试图找到问题的答案,但到目前为止我还找不到。

我目前拥有的是数组的模板类

template<typename T, int size>
class Array{

//Leaving out all my other stuff because I don't thinks its relevant.

private:

T array[size];
}

现在我需要做的是从cin读一行到数组中,例如

>>enter values: 1 2 3 4 5 6 7 8 9 

并将它们存储为[1] [2] [3] [4] ... etc 或

>>Enter values: Hello world!

并将它们存储为[Hello] [World!]

大多数询问此问题的人都将其单独输入,例如

>>Enter values: 1
2
3
4
5
etc.

但这不是我所需要的,我不确定如何将其拆分。 我的尝试:

template <typename T, int size>
void Array<T, size>::inputArray() {

    T data;
    getline(cin,data);
    istringstream elements (data);
    dynamicArray = elements;
}

但这会带来很多错误。

2 个答案:

答案 0 :(得分:1)

std::getline()读入std::string,不能像尝试那样直接将其读入T[]数组。

但是,由于您已经知道了期望的最大元素数量(通过size模板参数),因此可以简单地循环调用operator>>来解析{{1 }}从std::istringstream数据中填充,例如:

std::cin

Live Demo

答案 1 :(得分:0)

对输入使用循环,或者如果要输入一次,则使用除法和模运算符对整数进行分割。将每个新整数存储在数组索引中并递增索引。