繁体   English   中英

从文件中读取数据

[英]Reading data from file

我有.txt文件,其中包含如下数据[12,25],[36,45],即数字用方括号括起来,用逗号分隔,我想通过C ++程序读取这样的文件

我提到了字符串工具包可用,特别是regex工具可以使用,但我不能放入程序可以有人请帮帮我?

只需像这样使用scanffscanf

if(scanf("[%d,%d]",&a[i],&b[i])==2){
  ++i;
  while(scanf(",[%d,%d]",&a[i],&b[i])==2) ++i;
}

不要忘记CI / O函数是有效的C ++。

我是否正确猜测那些是坐标,如果是这样,你是否考虑过为它们编写一个简短的解析器? 那你可以读出一个顶点列表吗?

或者,如果您真的想要沿着正则表达式路径前进,您可能需要考虑下载boost库,boost.regex可以实现梦想:)

#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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM