2016-05-12 7 views
1

Ich möchte im Grunde schreiben eine Funktion, die einen Parameter als Dateiname nimmt und wenn mehrere Dateien haben, wird nur Dateiname als Parameter und es sollte dies wiederholt mit einer Funktion tun. Wie kann ich das machen? Danke.Wie kann ich eine Datei als Parameter in C++ übergeben?

Txt-Dateien sind wie diese zum Beispiel sorular.txt:

// Was die meisten überfüllten Land der Welt ist?
// China
// USA
// Deutschland
// Australien
// China

int main(){ 

    string array [5]; 
    string line; 
    string answer; 
    static int trueCount = 0; 
    static int falseCount = 0; 
    ifstream file("/Users/User/QuizMaker/Quiz Maker V2/sorular.txt"); 

    if(file.is_open()){ 
     cout << "Questions are loading... Please wait.."<<endl<<" ."<<endl<<" ."<<endl<<" ."<<endl; 
     while (!file.eof()) { 
      for (int i = 0; i<6; i++) { 
       getline(file,array[i]); 
      } 

      for (int a = 0; a<5; a++) { 
        cout << array[a] << endl; 
      } 
      cin >> answer; 

      if(answer == "C" || answer == "c") { 
       cout << true; 
       trueCount++; 
      } 
      else falseCount++; 
     } 

     cout << "You answered "<<trueCount << " questions as true" << endl; 
     cout << "You answered "<<falseCount << " questions as false" << endl; 
     file.close(); 
    } else cout << " not ıoen"; 

    cin.get(); 

    return 0; 
} 
+2

uh ... ich denke nicht, dass Sie in Ihrer Lern-Quest weiterkommen sollten. Zuerst brauchst du einfache Programmier-Tutorials/Kurse, lerne über Algorithmen, Prozessoren und ähnliches. Danach kannst du ein paar Übungen machen und ** dann ** kannst du dich auf solche Sachen versuchen. C und C++ sind leicht zu erlernen, aber sehr schwer zu meistern ... tu ** nicht ** überspringe ein paar Schritte, wie du es vorhast ... sonst versagst du es. Beginnen Sie mit grundlegenden Algorithmen zuerst, lernen Sie über Arrays, Datentypen, Zeiger .... das ist sehr wichtig – specializt

+0

Sicher, können Sie Argumente von der Befehlszeile akzeptieren. Die Argumente "argc" und "argv" von 'main (int argc, char ** argv)' sind der Weg zu diesen Argumenten. – Niall

+1

[Übrigens] (http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-sidered-wrong). – user657267

Antwort

0

Lassen Sie mich zuerst sagen, dass array nicht 0 Elemente halten kann, 1, 2, 3, 4 und 5. Es hat nur 5 Elemente zugeordnet.


Dies kann Ihren Horizont ein wenig erweitern, aber ich denke, die richtige Lösung ist eine Klasse hier. Also werde ich das zusammen hacken, wenn Sie interessiert sind, können Sie recherchieren, was ich ein bisschen getan habe und wenn Sie etwas nicht verstehen, zögern Sie nicht, in einem Kommentar zu fragen.

Obwohl diese Klasse überwältigend scheint, vereinfacht sie den Rest von dem, was Sie versuchen, acompilsh. Mit dieser Klasse wird der Rest Ihres Codes gelesen:

auto true_count = 0; 
auto false_count = 0; 

for_each(foo({"/Users/User/QuizMaker/Quiz Maker V2/sorular.txt", "foo.txt", "bar.txt"}), foo(), [&](const auto& i) { 
    string answer; 

    cout << i << endl; 
    cin >> answer; 

    if(answer == "C" || answer == "c") { 
     cout << 1; 
     true_count++; 
    } else { 
     false_count++; 
    } 
}); 
cout << "You answered "<< trueCount << " questions as true" << endl << "You answered " << falseCount << " questions as false" << endl;