0
我想從同一行格式的字符串中提取所有數字。以下代碼提取數字,但不記錄最後一行4。我應該如何改變我的正則表達式以獲得重複的行數?C++正則表達式解析數字字符串
#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
我真的在做的只是取出字符串並存儲每一行,如圖所示。所以,double數組中應該有四個向量,並且顯示與字符串中相同的東西。應存儲每行40個整數和4個向量。 –
kubuni
在'++ i;'之後放置'if'語句並重試。 –