Indeed, you cannot dynamically read data into a const array.
You can--however--provide a const interface to mutable data, via a const reference or pointer.
So long as you are asking good questions about constness you might go ahead and make the leap to std::array...
#include <array>
#include <algorithm>
#include <iostream>
int main() {
std::array<int, 5> writable = {4,3,0,1,2};
const std::array<int, 5> & readable = writable;
// you can mutate the writable (and use algorithms...)
std::sort(writable.begin(), writable.end());
// readable[0] = 1020; // this would give an error
// but read access is fine
for(int i : readable)
std::cout << i << ' ';
}
(Note: As you say you "don't know what your data is", there are different degrees of not knowing. There's not knowing how many there are, or knowing how many there are but just not the values. I actually deal with enough situations of knowing-how-many-and-not-the-values that I don't assume such things do not happen, buuuut... other people are pointing out the likely possibility you don't know how many there are either. In which case, use a vector!)