C++ 从文件中读取数据
我有一个.txt文件,其中包含如下数据 [12,25],[36,45]即数字用方括号括起来,用逗号隔开 我想通过C++程序阅读这样的文件C++ 从文件中读取数据,c++,file,C++,File,我有一个.txt文件,其中包含如下数据 [12,25],[36,45]即数字用方括号括起来,用逗号隔开 我想通过C++程序阅读这样的文件 我提到了可用的字符串工具包,特别是可以使用regex工具,但我无法放入程序。有人能帮我吗?我猜这些是坐标吗?如果是的话,你想过为它们编写一个简短的解析器吗?这样你就可以读出顶点列表了 或者,如果你真的想使用正则表达式,你可能想下载这个库,boost.regex是一个梦想:)只需像这样使用scanf或fscanf: if(scanf("[%d,%d]",&
我提到了可用的字符串工具包,特别是可以使用regex工具,但我无法放入程序。有人能帮我吗?我猜这些是坐标吗?如果是的话,你想过为它们编写一个简短的解析器吗?这样你就可以读出顶点列表了
或者,如果你真的想使用正则表达式,你可能想下载这个库,boost.regex是一个梦想:)只需像这样使用
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++。< /P> <代码>
#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;
}
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
布尔isSeparator(常量字符c){
返回c='['| | c=']'| | c==',';
}
int main(){
const char filename[]=“data.txt”;
ifstream-fin(文件名);
向量v;
琴弦浅黄色;
while(getline(fin,buff)){
如果(buff.begin()、buff.end()、isSeparator“”),则替换_;
istringstream sin(浅黄色);
对于(int n;sin>>n;){
v、 推回(n);
}
}
复制(v.begin(),v.end(),ostream_迭代器(cout,“\n”);
//对于(int i=0;我到目前为止你写过代码吗?你能把你的问题说得更清楚一点吗?现在有点让人困惑。文件中包含[10,20]、[15,35]之类的数字现在我如何才能得到数组中的10×20和35……我不希望像拾取字符那样的正常方法扫描直到N,我知道这样的逻辑,我想要的是使用Strutk的高效C++代码……最好在SttkKNE中使用正则表达式特征。自从上一个小时以来,你不需要正则表达式来完成这个操作,简单地使用流中的提取器操作符。