cplusplus17.Examples/examples/shuffle_list/shuffle_list.cpp
Source: cplusplus17.Examples/examples/shuffle_list/shuffle_list.cpp
#include<iostream>
#include<fstream>
#include<algorithm>
#include<vector>
#include<string>
#include<chrono>
#include<random>
void read_stream(std::istream &in, std::vector<std::string> &out);
int main(int argc, char **argv) {
std::vector<std::string> vec;
unsigned int seed = std::chrono::system_clock::now().time_since_epoch().count();
if(argc == 1) {
read_stream(std::cin, vec);
} else if(argc >= 2) {
for(int i = 1; i < argc; ++i) {
std::fstream file;
file.open(argv[i], std::ios::in);
if(file.is_open())
read_stream(file, vec);
else {
std::cerr << argv[0] << ": Error could not read file: " << argv[1] << "...\n";
exit(EXIT_FAILURE);
}
}
}
std::shuffle(vec.begin(), vec.end(), std::default_random_engine(seed));
for(auto &s : vec) {
std::cout << s << "\n";
}
return 0;
}
void read_stream(std::istream &in, std::vector<std::string> &out) {
while(!in.eof()) {
std::string s;
std::getline(in, s);
if(in)
out.push_back(s);
}
}