Guten Morgen,
ich hab mir ein kleines Programm geschrieben, das einen Ordner nach php- und js-Dateien durchsucht und die Ergebnisse auswertet.
Alles anzeigen
Für die Eigenschaften hab ich ein struct verwendet. Da mir momentan das alles zu "undynamisch" ist würde ich das struct gerne in eine Map packen, deren Elemente dann aus einer INI-Datei ausgelesen werden. Wenn als in der ini 'type=php|js|img|ttf;' sollen automatisch 4 Map Elemente mit den jewiligen Dateinamen als Index und dem Struct als Eigenschaften.
In etwa so:
MinGW spuckt das als Error raus: M:\data\CB Projects\count\main.cpp|45|Fehler: Templateargument für »template<class _T1, class _T2> struct std::pair« verwendet lokalen Typ »main(int, char**)::group«|
Da ich bis gerade eben im Glauben war, dass ein Struct wie eine Klasse behandelt wird bin ich etwas ratlos. Hat von euch jemand eine Idee wie man das Problem lösen kann, oder eine alternative Möglichkeit?
Dankeschön
ich hab mir ein kleines Programm geschrieben, das einen Ordner nach php- und js-Dateien durchsucht und die Ergebnisse auswertet.
Quellcode
- #include <boost/filesystem.hpp>
- #include <iostream>
- #include <fstream>
- #include <map>
- #include <string>
- #include <vector>
- namespace bf = boost::filesystem;
- unsigned int getLines(std::ifstream &file)
- {
- unsigned int lines = 0;
- std::string line;
- while(getline(file, line))
- {
- lines++;
- }
- return lines;
- }
- int main(int arg, char *argv[])
- {
- std::vector<bf::path> files;
- struct group
- {
- std::string type;
- unsigned long size;
- unsigned int files;
- unsigned long lines;
- group(std::string name)
- {
- group::type = name;
- group::size = 0;
- group::files = 0;
- group::lines = 0;
- }
- };
- group php("php");
- group js("ja");
- bf::directory_iterator iterator(std::string("C:\\development\\xampp\\htdocs\\DeepUniverse\\"));
- bf::path path;
- std::ifstream file;
- while(iterator != bf::directory_iterator())
- {
- path = iterator->path();
- if(bf::is_regular_file(bf::status(path)) && bf::extension(path) == ".php")
- {
- file.open((path.string()).c_str());
- php.size += bf::file_size(path);
- php.lines += getLines(file);
- php.files++;
- }
- if(bf::is_regular_file(bf::status(path)) && bf::extension(path) == ".js")
- {
- file.open((path.string()).c_str());
- js.size += bf::file_size(path);
- js.lines += getLines(file);
- js.files++;
- }
- iterator++;
- }
- std::cout << php.type << std::endl << std::endl
- << "Dateien : " << php.files << std::endl
- << "Gesamtgröße : " << php.size << std::endl
- << "Zeilen : " << php.lines << std::endl;
- std::cout << js.type << std::endl << std::endl
- << "Dateien : " << js.files << std::endl
- << "Gesamtgröße : " << js.size << std::endl
- << "Zeilen : " << js.lines << std::endl;
- return 0;
- }
Für die Eigenschaften hab ich ein struct verwendet. Da mir momentan das alles zu "undynamisch" ist würde ich das struct gerne in eine Map packen, deren Elemente dann aus einer INI-Datei ausgelesen werden. Wenn als in der ini 'type=php|js|img|ttf;' sollen automatisch 4 Map Elemente mit den jewiligen Dateinamen als Index und dem Struct als Eigenschaften.
In etwa so:
MinGW spuckt das als Error raus: M:\data\CB Projects\count\main.cpp|45|Fehler: Templateargument für »template<class _T1, class _T2> struct std::pair« verwendet lokalen Typ »main(int, char**)::group«|
Da ich bis gerade eben im Glauben war, dass ein Struct wie eine Klasse behandelt wird bin ich etwas ratlos. Hat von euch jemand eine Idee wie man das Problem lösen kann, oder eine alternative Möglichkeit?
Dankeschön
![;)](https://www.easy-coding.de/wcf/images/smilies/wink.png)