@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
.