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'语句并重试。 –