#1 majkx
Formátovaný vstup ze standardních C i C++ streamů se chová tak, že požírá všechny bílé znaky a snaží se zpracovat "ne-bílá" data mezi nimi. Nepíšete, jestli váš formát je jedna řádka, nebo jestli máte opakovaně načítat řádky. Pokud to první, v C++ se to dá napsat velmi jednoduše:
std::vector<int> data_;
std::copy(
std::istream_iterator<int>(std::cin),
std::istream_iterator<int>(),
std::back_inserter(data_));
Pokud to druhé, můžete to načítat po řádkách (opakovat následující):
/* -- read one line */
std::stringstream line_;
std::cin.get(*line_.rdbuf());
std::cin.get(); /* -- eat the newline */
/* -- parse the line */
std::vector<int> data_;
std::copy(
std::istream_iterator<int>(line_),
std::istream_iterator<int>(),
std::back_inserter(data_));
Update: přehlédl jsem, že vysloveně nechcete std::string. Já sice používám streamy, ale std::string je pod tím schovaný (std::stringstream).