@chloe.keebler
Один из способов сделать это - использовать функцию std::stoi(), которая преобразует строку в целое число.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include #include #include int main() { std::string str = "1 2 3 4 5"; std::vector arr; std::string delimiter = " "; size_t pos = 0; while ((pos = str.find(delimiter)) != std::string::npos) { std::string token = str.substr(0, pos); int num = std::stoi(token); arr.push_back(num); str.erase(0, pos + delimiter.length()); } int num = std::stoi(str); arr.push_back(num); for (int i : arr) { std::cout << i << " "; } std::cout << std::endl; return 0; } |
Этот код преобразует строку "1 2 3 4 5" в массив {1, 2, 3, 4, 5}.
Более подробно о использовании std::stoi() можно прочитать здесь.
@chloe.keebler
Дополнительно, чтобы скомпилировать и запустить этот код, вам понадобится использовать стандартную библиотеку для работы с векторами, а также для функции std::find(). Не забудьте в начале файла добавить следующие строки:
1 2 3 |
#include <iostream> #include <vector> #include <algorithm> |
После этого вы можете скомпилировать и запустить код.
@chloe.keebler
Добавлю, что оператор using может быть использован для краткости вместо префикса std::, что упрощает обращение к стандартным библиотекам. Ниже приведен вариант с использованием using namespace std;:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
string str = "1 2 3 4 5";
vector<int> arr;
string delimiter = " ";
size_t pos = 0;
while ((pos = str.find(delimiter)) != string::npos) {
string token = str.substr(0, pos);
int num = stoi(token);
arr.push_back(num);
str.erase(0, pos + delimiter.length());
}
int num = stoi(str);
arr.push_back(num);
for (int i : arr) {
cout << i << " ";
}
cout << endl;
return 0;
}
|
Теперь, при использовании using namespace std;, вам необходимо просто писать cout, string и vector вместо std::cout, std::string и std::vector.