For your current example, you should use std::stringinstead std::array<char, 10>. However, if you still want to read the array, you can do it like this:
#include <iostream>
#include <array>
int main() {
std::array<int, 10> arr;
for(int temp, i = 0; i < arr.size() && std::cin >> temp; ++i) {
arr[i] = temp;
}
for(auto&& i : arr) {
std::cout << i << ' ';
}
}
Conclusion:
$ ./a.out
10 11 12 13 14 15 16 17 18 19
10 11 12 13 14 15 16 17 18 19
- , operator[]. std::cin >> temp , . , , .
, :
#include <iostream>
#include <array>
template<typename T, size_t N>
std::istream& input_array(std::istream& in, std::array<T, N>& arr) {
unsigned i = 0u;
for(T temp; i < arr.size() && in >> temp; ++i) {
arr[i] = std::move(temp);
}
return in;
}
int main() {
std::array<int, 10> arr;
input_array(std::cin, arr);
}
operator>> std, undefined.
, :
template<typename T, size_t N>
std::istream& input_array(std::istream& in, std::array<T, N>& arr) {
for(unsigned i = 0u; i < arr.size() && in >> arr[i]; ++i) {
}
return in;
}