[英]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.