gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:21:00 26 4
gpt4 key购买 nike

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

我现在所拥有的是数组的模板类

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

但这会带来很多错误。

最佳答案

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

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

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

Live Demo

关于c++ - C++将cin值存储到任何类型的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60180289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com