string в массив int c++
Уважаемые программисты! Возник такой вопрос: как перевести string, допустим "1244 22 12 56 7" в динамический массив int, чтобы он содержал {1244, 22, 12, 56, 7}.
Ответы (1 шт):
Автор решения: KoVadim
→ Ссылка
Есть много-много способов. Но все сводятся к разделению и потом переводу в числа.
вот один с любимых и простых
#include <vector>
#include <iostream>
#include <sstream>
std::vector<int> parse(const std::string& s) {
std::vector<int> r;
std::stringstream ss{s};
int n;
while (ss >> n) { r.push_back(n);}
return r;
}
int main(){
std::string s = "1244 22 12 56 7";
std::vector<int> r = parse(s);
for (auto el : r) {
std::cout << el << "\n";
}
}
А вот пример, как можно сделать эту же функцию, но "без внешних зависимостей". Правда она очень требовательная к формату - шаг в сторону и она работает неверно
std::vector<int> parse(const std::string& s) {
std::vector<int> r;
int n = 0;
for (char c : s) {
if (c == ' ') {
r.push_back(n);
n = 0;
} else {
n = n*10+c-'0';
}
}
r.push_back(n);
return r;
}
P.S. Многие, когда пишут "динамический массив" хотят почему то видеть указатель, но у нас же с++, а здесь динамический массив - это std::vector.