C++ will strings von Datei nicht lesen!

n’ abend wünsche ich,

ich brauche erneut eure hilfe und zwar bei folgendem Problem.

Ich bin dabei eine ART system für supermarktkassen zu schreiben. Und zwar muss ein neues Produkt mir Artikelnummer Name und Preis eingepflegt werden, dann wird eine Datei erstellt deren Name der Artikelnummer entspricht.
Nun muss man die Ware scannen (im meinem Fall ist es aber eher ein abtippen der Artikelnummer ;D) das Programm öffnet dann also die Datei deren Name eben der Artnr entspricht liest den Namen und den Preis.

Gaaanz später soll dann noch eine Rechnung erstellt werden wo dann fein säuberlich alle Artikel samt ihrem Preis aufgezählt werden, aber das ist noch ein Stückchen Arbeit.

Im moment jedoch zerbricht es mir den Kopf die Strings aus der Datei in für mich nutzbare werte zu wandeln. Ich habe bereits soetwas ähnliches geschrieben, da hat der Script wunderbar geklappt.

was ihr hier seht ist quasi eine 1 zu 1 kopie vom schoneinmal verwendetem funktionierendem code, lediglich die Variablen wurden geändert.

int ware::laden(){

 string inhalt;

 cout \> artikelnummer;


 warenname.open(artikelnummer, ios::in); // öffnen der Datei

 if(!warenname.is\_open()){ //falls es entgangen sein sollte den Artikel einzupflegen
 cout 

Hier noch die klasse



    
    class ware{
    
    private:
     char artikelnummer[9];
     char name[20];
     float preis;
     fstream warennamefstream; //zum schreiben in die Datei
     ifstream warenname; //zum einlesen
    
    public:
     void einpflegen();
     void scannen();
     void ausgeben();
     int laden();
    
    
    };




wie gesagt der selbe, leicht veränderte code, hat bereits Wunderbar funktioniert, bloß hier nicht :frowning:

hoffe ihr wisst weiter

grüße 
tim

Moin moin,

getline(warenname, inhalt); //das klappt
strcpy(name,inhalt.c_str());//das nicht

was heisst klappt nicht , Fehlermeldung ? Hast du kein Debugger ?

klappt nicht gibt es nicht, es gibt fehlermeldungen , aber ein klappt nicht ist unsinn .

nein Fehlermeldungen gibt es nicht, das problem besteht darin das strcpy eigentlich den Wert von inhalt in den Wert von „name“ schreiben soll. aber genau das klappt nicht.

und mit preis = atof(inhalt.c_str()) will ich den wert den Inhalt an dieser Stelle angenommen hat in in einen float umwandeln und damit „preis“ initialisieren.
aber auch das funktioniert wieder nicht.

das Inhalt die Werte von getline bekommt hab ich mit meinem Test festgestellt. bloß beim umwandeln haperts.

nein Fehlermeldungen gibt es nicht,

wenns keine Fehler gibt liegt es wohl an den Daten , das ist aufgabe eines jeden Programmierers die daten zu debuggen. Welche sind wo , funnktioniert die funktion etc etc

Das folgende Zeigt das die Funktion nicht das Problem ist. Also wenn es keine Fehler gibt aber deine Ausgabe nicht das ist was du erwartest, dann musst du erstmal prüfen ob überhaupt Daten vorliegen .

// TestCLR.cpp: Hauptprojektdatei.
#include „stdafx.h“
#include
#include
using namespace std;

int main(array ^args)
{
// ware diewahre ;
// diewahre.laden();
char name[20];
string inhalt = „Hallo“;
strcpy(name,inhalt.c_str());//das nicht
cout

Hi,
was soll der strcpy-Mist? Du kannst doch direkt mit

string stringtext;
char\* cstringtext = stringtext.c\_str();

Das müsste eigentlich gehen.
Lg Knerd

Knerd,

was soll der strcpy-Mist? Du kannst doch direkt mit

string stringtext;
char* cstringtext = stringtext.c_str();

Das müsste eigentlich gehen.

Nein, das müsste eigentlich nicht gehen. c_str() liefert einen const char* und den kann man nicht an einen char* zuweisen … Zudem ist das Ganze nach der naechsten „Reallocation“ im string schon nicht mehr gültig …

Gruss
norsemanna

1 Like

Hallo globus

… das problem besteht darin
das strcpy eigentlich den Wert von inhalt in den Wert von
„name“ schreiben soll. aber genau das klappt nicht.

Du könntest „name“ aber auch gleich als string deklarieren, dann reicht es (anders als bei char *…):

name = inhalt;

lG
Martin B