Я пытаюсь извлечь все числа из строки в том же формате строки. Следующий код извлекает числа, но не записывает последнюю строку из 4s. Как мне изменить регулярное выражение для повторной строки чисел?C++ regex parsing numbers from string
#include <iostream>
#include <vector>
#include <string>
#include <regex>
using namespace std;
const string data ="4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,"
"4,8,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,8,3,3,3,3,3,3,7,8,3,3,3,3,3,3,7,4,"
"4,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,6,1,1,1,1,1,1,5,6,1,1,1,1,1,1,5,4,"
"4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4";
int main() {
regex e("[1-9]");
sregex_token_iterator rit(data.begin(), data.end(), e);
sregex_token_iterator rend;
int i = 0;
std::vector<std::vector<int>> double_array;
double_array.reserve(4);
std::vector<int> row;
row.reserve(40);
while(rit != rend)
{
if(i == 40)
{
double_array.push_back(row);
row.clear();
row.reserve(40);
i = 0;
}
row.push_back(stoi(rit->str()));
++i;
++rit;
}
for(auto & disp_row : double_array)
{
for(auto & c : disp_row)
{
cout<< c << " ";
}
cout << "\n";
}
return 0;
}
Что именно ожидается? – Shafizadeh
Все, что я действительно делаю, это просто взять строку и сохранить каждую строку, как показано. поэтому в двойном массиве должно быть четыре вектора и отображать то же самое, что и в строке. должно быть 40 ints в каждой строке и 4 вектора сохранены. –
kubuni
Положите оператор 'if' после' ++ i; 'и повторите попытку. –