Fehlerhafte Stringübergabe

Guten Abend Deepthroat,

Zuerst einmal zur Sache mit der Code-Duplizierung:
Du siehst ja, dass der Benutzer am Anfang zwischen Würfel oder Münze wählen kann. Je nachdem, welchen "Modus" er wählt, kommen andere Texte. Beispiel Würfel: Wie oft soll gewürfelt werden und bei der Münze: Wie oft soll geworfen werden. Daher habe ich im Prinzip immer zwei Funktionen, die sich nur in ihrer Textausgabe unterscheiden, aber sonst das Gleiche machen.

Ich habe jetzt deine IF-Verzweigung in Intro(), start_c() (c steht für coin, also Münze), start() und size_ms() integriert. Es lässt sich alles kompilieren und ausführen. Allerdings kommt keine Fehlermeldung mehr, sondern der Dateiname wird nach dem Leerzeichen einfach abgeschnitten.

Beispiel: Wie soll die Datei heißen: Test 01 <Enter>
Das Programm erstellt einfach eine Datei namens Test

Danke im Voraus!
 
Hi.
Zuerst einmal zur Sache mit der Code-Duplizierung:
Du siehst ja, dass der Benutzer am Anfang zwischen Würfel oder Münze wählen kann. Je nachdem, welchen "Modus" er wählt, kommen andere Texte. Beispiel Würfel: Wie oft soll gewürfelt werden und bei der Münze: Wie oft soll geworfen werden. Daher habe ich im Prinzip immer zwei Funktionen, die sich nur in ihrer Textausgabe unterscheiden, aber sonst das Gleiche machen.
Ja, aber das ist doch witzlos. Warum übergibst du denn nicht einfach den Text als Parameter an eine Funktion?
Ich habe jetzt deine IF-Verzweigung in Intro(), start_c() (c steht für coin, also Münze
Warum nennst du die Funktion dann nicht start_coin? Es weiß doch keiner (nach 2 Wochen auch du nicht) was das bedeuten soll.
), start() und size_ms() integriert. Es lässt sich alles kompilieren und ausführen. Allerdings kommt keine Fehlermeldung mehr, sondern der Dateiname wird nach dem Leerzeichen einfach abgeschnitten.
Bei mir funktioniert es. Häng den Code nochmal hier an. Und bitte ohne .o und .exe Dateien.

Gruß
 
Nabend Deepthroat,

hier mein Projektordner ohne Bin und Object:

Ja, aber das ist doch witzlos. Warum übergibst du denn nicht einfach den Text als Parameter an eine Funktion?
Könntest du mir bei Gelegenheit ein Beispiel geben, damit ich sehe, wie es funktioniert.

Zu meinen Funktionsnamen etc.:
Ich stimme dir voll und ganz zu. Für die Zukunft werde ich es mir zu Herzen nehmen.

DANKE!
 

Anhänge

  • gdgz#2.zip
    12,9 KB · Aufrufe: 10
Zuletzt bearbeitet:
Nabend Deepthroat,

hier mein Projektordner ohne Bin und Object:
Warum hängst du es denn nicht hier an? Es ist nicht gerade toll sich durch nen Haufen Pop-Ups erst zur Datei durchkämpfen zu müssen.

Du hast die filename() Funktion verändert.

Und sieh doch mal zu das du lernst mit dem Debugger umzugehen. Da siehst du doch nun wirklich Schritt für Schritt was passiert.

Wenn du 2 Funktionen hast, die abgesehen von ein paar Stellen:
Code:
--- start.cpp	2010-05-12 20:40:49.497432949 +0200
+++ start_c.cpp	2010-05-12 20:40:39.109431287 +0200
@@ -2,16 +2,16 @@
 #include <limits>
 #include <string>
 #include <sstream>
-#include "start.h"
+#include "start_c.h"
 #include <cstdio>
 using namespace std;
 
-unsigned long int start()
+unsigned long int start_c()
 {
     bool check=false;
     unsigned long int temp=0; //Anzahl der Würfe
     string line;
-    cout<<"Wie oft soll gew\x81 \brfelt werden: ";
+     cout<<"Wie oft soll geworfen werden: ";
     do
     {
 if (getline(cin, line)) {
das gleiche tun, dann kannst du doch diese Stellen gegen Platzhalter (Parameter) austauschen:

C++:
unsigned long int start(const std::string& prompt)
{
    bool check=false;
    unsigned long int temp=0; //Anzahl der Würfe
    string line;
    cout<< prompt;
    ...
}

unsigned long x = start("Wie oft soll gew\x81 \brfelt werden: ");
Wobei der Name "start" auch nicht gut gewählt ist, nur weil da das Programm startet

Gruß
 
Nabend,

ich habe meine filename.cpp jetzt so:

Code:
#include <iostream>
#include <string>
#include "filename.h"
using namespace std;

string filename()
{
    string filename;
    cout<<"Wie soll die Datei hei\xE1 \ben: ";
    getline(cin,filename);
    filename+=".ini";
    return filename;

}

Es funktioniert jetzt auch soweit, aber ich muss 2x <ENTER> drücken:
Wie soll die Datei heißen: Test 01 <ENTER>
<ENTER>

Ansonsten funktioniert es, aber warum ist das so?
 
Guten Abend,

da ich leider im Urlaub war, kann ich mich erst jetzt wieder melden. Wollte nur kurz Bescheid geben, dass jetzt alles wie gewünscht läuft. Danke noch einmal an alle, die geholfen haben - besonders Deepthroat!
 

Neue Beiträge

Zurück