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

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

但这会带来很多错误。

最佳答案

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/

相关文章:

c++ - 为什么要在程序中使用结构?

c++ - CppUnit 1.12.1 中缺少库

c++ - lParam 或 WCHAR[] 有问题

c# - 如何在数据库中存储带有数组的 C# 对象?

c++ - 使用 std::cin 输入停止 while 循环

c++ - 为什么我的程序无法识别 C++ 循环内的 Cin?

c++ - 如何将对象读/写到文件

c++ - 清除标准输入缓冲区(内存占用)

c++ - 如何在 while 循环中使用 cin?

检查简单数组中重复出现的字符 [C]