C++ 将 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]...等 或

>>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;
}

但这会带来一大堆错误。

std::getline()读取std::string,你不能让它像你试图做的那样直接读入T[]数组。

但是,由于您已经知道预期的最大元素数(来自size模板参数(,因此您只需在循环中调用operator>>即可从从std::cin数据填充的std::istringstream中解析格式化的数组元素,例如:

template <typename T, int size>
void Array<T, size>::inputArray() {
string line;
getline(cin, line);
istringstream iss(line);
for (int i = 0; i < size; ++i) {
if (!(iss >> array[i])) {
// eof or error, handle as needed...
break;
}
}
}

现场演示

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

相关内容

  • 没有找到相关文章

最新更新