C11++ regexを使ってトークンにCSSファイルを分割し、キー/値としてstd :: mapに挿入する方法を知りたいですか?C++ 11の正規表現を使用してトークン上のcssファイルを分割する方法は?
CSSファイル:
#id1 {
border: 1px;
color: red;
}
#id2 {
border: 2px;
color: green;
};
C++コード:
#include <iostream>
#include <fstream>
#include <map>
#include <regex>
using namespace std;
int main() {
ifstream file("file.css", ios::binary);
if(!file.is_open())
return 1;
//... how to split file on tokens?
//and insert tokens probably like this (but only in a loop and dynamically):
map<string, string> array;
array.insert(make_pair("#id1", "border: 1px; color: red;"));
array.insert(make_pair("#id2", "border: 1px; color: green;"));
//...
map<string, string>::iterator i = array.begin();
while(i != array.end()) {
cout << "key: " << i->first << " | value: " << i->second << endl;
i++;
}
//out:
/*
key: #id1 | value: border: 1px; color: red;
key: #id2 | value: border: 2px; color: green;
*/
return 0;
}
私はJavaScriptの実装に必要なもの:実際には
var css = "\
#id1 {\
border: 1px;\
color: red;\
}\
#id2 {\
border: 2px;\
color: green;\
}";
//remove tabulation and split on tokens
var array = css.replace(/[\t\n\r]*/g, '').replace(/\s{2}/g, ' ').split('}'),
i = array.length-1,
stack = [];
//close right brace and insert into stack[]
while(i--) {
stack.unshift(array[i] + "}");
}
i = stack.length;
var map = {};
//fill map (key/value)
while(i--) {
map[stack[i].match(/(.*){.*}/)[1]] = stack[i].match(/.*{(.*)}/)[1];
}
//out
for(i in map) {
document.write('key: ' + i + ' | value: ' + map[i] + '<br />')
}
、私はちょうど必要シム正規表現を使用した分割CSSファイルの例
gccが、すべての標準が必要とする機能を持つのstd :: regex' '実装がありますか? – Nawaz
これのどの部分がわかりにくいのですか?C++で ''を使用する方法、または実際の正規表現をどのようにするべきですか?それぞれはまっすぐな答えを持っていますが、これはあまりにも多くの "私のための私の全体のプログラムを書いてください"タイプ質問があります。 –
私はGCC 4.7の最新バージョンを持っています。実際には、正規表現 – Algorithm