我有.txt文件,其中包含如下数据 [12,25],[36,45],即数字用方括号括起来,用逗号分隔 我想通过C ++程序读取这样的文件
我提到了可用的字符串工具包,特别是可以使用正则表达式工具但是我不能放入程序可以有人请帮帮我吗?
答案 0 :(得分:1)
只需使用scanf
或fscanf
,就像这样:
if(scanf("[%d,%d]",&a[i],&b[i])==2){
++i;
while(scanf(",[%d,%d]",&a[i],&b[i])==2) ++i;
}
不要忘记C I / O函数是有效的C ++。
答案 1 :(得分:0)
我是否正确地猜测那些是坐标,如果是这样,你是否考虑过为它们编写一个简短的解析器?那么你可以读出一个顶点列表吗?
或者,如果您真的想要沿着正则表达式路径前进,您可能需要考虑下载boost库,boost.regex是一个梦想:)
答案 2 :(得分:-3)
#include <iostream>
#include <iterator>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool isSeparator(const char c){
return c == '[' || c == ']' || c == ',';
}
int main(){
const char filename[] = "data.txt";
ifstream fin(filename);
vector<int> v;
string buff;
while(getline(fin, buff)){
replace_if(buff.begin(), buff.end(), isSeparator, ' ');
istringstream sin(buff);
for(int n;sin >> n;){
v.push_back(n);
}
}
copy(v.begin(), v.end(), ostream_iterator<int>(cout,"\n"));
//for(int i=0;i<v.size();++i) cout << v[i] << endl;
}