我有一个名为short2.json的JSON文件,它以下列格式存储树:
{"id":442500001101774848, "reply":0, "children":[{"id":442501072373153792, "reply":1, "children":[{"id":442501562938966016, "reply":1, "children":[{"id":442502567265062912, "reply":1, "children":[]}]}]}]}
{"id":442500000258342912, "reply":0, "children":[{"id":442500636668489728, "reply":0, "children":[]}]}
我需要将每个树的根存储在一个散列图中,同时将一个元组存储为与树对应的行的偏移量和字节大小,这样我最终可以进行一些搜索并从该行中的确切位置复制该行。文件到另一个文件。为此,我将需要文件中每一行的偏移量和行的大小(或者有更好的方法吗?)
我做了以下事情:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream files("short2.json");
string f;
while (getline(files, f)) {
fpos_t pos;
fgetpos(files, &pos);
cout << *pos << " " << sizeof(f) << endl;
}
}
但是在编译时,我收到以下错误:
readFile.cpp: In function âint main()â:
readFile.cpp:9:22: error: invalid conversion from âvoid*â to âFILE* {aka _IO_FILE*}â [-fpermissive]
/usr/include/stdio.h:795:12: error: initializing argument 1 of âint fgetpos(FILE*, fpos_t*)â [-fpermissive]
readFile.cpp:10:12: error: no match for âoperator*â in â*posâ
如何解决这个问题?
答案 0 :(得分:1)
感谢@LightnessRacesinOrbit指针。以下是我提出的代码。
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream files("short2.json");
string f;
while (getline(files, f)) {
cout << files.tellg() - f.size() - 1 << " " << f.size() << endl;
}
}