[英]Reading files using some Pyhton or any script and converting data into C++ key=>value pair (STL maps)
我正在尝试逐行读取文件中的数据并从中读取一些特定数据,然后将该数据作为键值对存储到 c++ stl 映射中。
例如:-假设我们有一个文件 raw_data.inc,其中包含以下数据:-
//
This file consists data of players
Players data
#define David data(12345) //David's data
#define Mark data(13441) //Mark's data
Owners data
#define Sarah data(98383) //Sarah's data
#define Coner data(73834) //Coner's data
This is the end of the file
//
假设上述所有数据都存储在我们要读取的文件中(假设正斜杠也是数据的一部分)。 所以我想要的是读取它的某些部分(具体是David
和12345
)并将其存储到 c++ stl map 作为键值对
map <string,string> mp
和数据将被存储为
mp[12345=>"David",13441=>"Mark",98383=>"Sarah",73834=>"Coner"];
所以我的问题是,有可能这样做吗? 如果是,那么如何? C++ 的正常文件流会起作用吗?
假设我们不知道存储在该文件中的数据的数据类型是什么。 文件可以是.h文件或.cpp文件或.inc文件
目前尚不清楚您实际上要做什么。 但是,如果您只想在运行时将文件的内容读入std::map
,那么您只需解析文件的行:
#include <iostream>
#include <string>
#include <sstream>
#include <map>
int main() {
//
std::stringstream ss{R"(#define David data(12345)
#define Mark data(13441)
#define Sarah data(98383)
#define Coner data(73834))"};
std::map<std::string, std::string> m;
std::string line;
while (std::getline(ss,line)){
std::string dummy;
std::string name;
std::string data;
std::stringstream linestream{line};
linestream >> dummy >> name >> data;
auto start = data.find('(');
auto stop = data.find(')');
m[data.substr(start+1,stop-start-1)] = name;
}
for (const auto& e : m) {
std::cout << e.first << " " << e.second << "\n";
}
return 0;
}
您只需将 stringstream 替换为ifstream
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.