Problem: Kommandozeilenargumente
-
Hallo,
ich hoffe hier kann mir jemand helfen: Ich habe folgendes Programm geschrieben, das einen Text einlesen soll: Diesen Text möchte ich in der Kommandozeile übergeben, also zum Beispiel: g++ 91.cpp in.text
das funktioniert aber nicht und bekomme ich immer folgende Fehlermeldung:/usr/bin/ld:in.txt: file format not recognized; treating as linker script /usr/bin/ld:in.txt:1: syntax error collect2: ld returned 1 exit status
Mein Programm sieht folgendermaßen aus:
#include <iostream> #include <fstream> #include <string> #include <vector> #include <locale> using namespace std; class Lexikon { private: vector<string> _memory; //... _ steht für "aus dem private Bereich" int _number_of_elements_in_memory; public: Lexikon(); void add_element(string elem); bool is_element(string elem); void drucke_memory(); }; int main(int argc, char** argv) { // int argc beinhaltet die Anzahl von Argumenten, welche dem Programm beim Start übergeben wurden // Im zweiten Parameter stehen die einzelnen Argumente. // Diese werden als Strings in einer Stringtabelle gespeichert. locale loc(""); locale::global(loc); ifstream in(argv[1]); //in.imbue(loc); Lexikon lex; string str; while(in >> str) lex.add_element(str); // lex.add_element(string("erna")); //string weil sonst cstring erwartet wird // lex.add_element(string("hans")); // lex.add_element(string("franz")); if (lex.is_element((string)"erna")) { cout << "Habe erna gefunden" << endl; } else { cout << "Habe erna leider nicht gefunden :-(" << endl; } lex.drucke_memory(); return 0; } // Konstruktor: _number_of_elements_in_memory auf Null setzen Lexikon::Lexikon() : _number_of_elements_in_memory(0) { // _number_of_elements_in_memory=0; } void Lexikon::add_element(string word) { _memory.push_back(word); _number_of_elements_in_memory++; } bool Lexikon::is_element(string word) { vector<string>::const_iterator it=_memory.begin(); //const_iterator weil man nichts ändert! for (; it !=_memory.end(); ++it) { if (*it == word) return true; } if (it == _memory.end() ) return false; } void Lexikon::drucke_memory() { for (vector<string>::const_iterator it = _memory.begin(); it != _memory.end(); ++it) { cout << *it <<endl; } }
vielleicht kannt mir jemand helfen , und sagen was genau ich da falsch mache?!?!
Vielen Dank
nc10
-
Völlig falsches Forum: besser wäre C++. Hier ist C++/CLI!
-
Du kompilierst so:
g++ -o main main.cpp
Rufst dein Programm so auf:
./main test.txt