Если ваша цель - сохранить эти числа в массиве int
, есть способы сделать это без необходимости записывать циклы for
, вызывая substr
и т. Д.
Для этого одним из способов является замена нежелательных символов пробелами. Как только это будет сделано, тогда речь идет об использовании средств, доступных в C ++, которые позволяют анализировать и хранить элементы, когда в качестве входных данных передается строка.
Следующее использует std :: replace_if для замены символов и std :: istringstream для анализа строки.
#include <string>
#include <sstream>
#include <vector>
#include <iostream>
#include <algorithm>
int main()
{
std::string s="[1 2 3;4 5 6;7 8 9]";
// store items here
std::vector<int> news;
// replace unwanted characters with a space
std::replace_if(s.begin(), s.end(), [](char ch){return ch == ']' || ch == '[' || ch == ';';}, ' ');
// parse space delimited string into the vector
std::istringstream strm(s);
int data;
while (strm >> data)
news.push_back(data);
// output results
for (auto& v : news)
std::cout << v << "\n";
}
Выход:
1
2
3
4
5
6
7
8
9
Живой пример