Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Task-Manager

Alter Hase

  • »Task-Manager« ist der Autor dieses Themas

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

1

01.03.2010, 17:45

aus Text-Dateien lesen

Hi,

Ich proggramiere gerade an nem verschlüsselungs-algo. Allerdings braucht dieser Algorithmus ziemlich lange Primzahlen als input. Cin eingabe fällt damit weig, Copy 'n paste geht ja iner Konsole nicht, ne GUI ist mir viel zu aufwändig.
Daher wollte ich die Primzahlen in Text-Dateien speichern als char auslesen und dann umcasten. Allerdings happerts beim auslesen-.-

Hier mein Quelltext:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
#include <iostream>
.
.
.
ifstream fP ("Prim1.txt");      //Primzahl 1 laden

    if(fP >> cP)                    // in den char kopieren

    {
        cout << cP << endl;         //char ausgeben

    } 
    else
    {           
        cout << "error reading!" << endl; // kann nicht gelesen werden

    }
    fP.close();                           // Handle - schliesen

.
.
.

es kommt ständig "error reading!" :/ Habe visual studio 2008 und nutze Win 7 64Bit.

hoffe hier kennt wer das Problem^^

mfg
Task-Manager

EDIT: die Text Datei liegt im Debug Ordner bei der exe und heist genau so....
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

2

01.03.2010, 17:51

Hmm soweit ich weis liefert der >>-operator kein booltype zurück, sondern das eigentliche FileStreamObject... und deshablb würd ich es einfach so machen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <fstream>
#include <iostream>
.
.
.
uLong cP;
ifstream fP ("Prim1.txt");        //Primzahl 1 laden

fP >> cP;
    if(fP.good())                    // in den char kopieren

    {
        cout << cP << endl;            //char ausgeben

    }
    else
    {           
        cout << "error reading!" << endl; // kann nicht gelesen werden

    }
    fP.close();                              // Handle - schliesen

.
.
. 


//EDIT: Ohh sorry... diesen Hier bitte löschen ! :)

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

3

01.03.2010, 17:51

Hmm soweit ich weis liefert der >>-operator kein booltype zurück, sondern das eigentliche FileStreamObject... und deshablb würd ich es einfach so machen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <fstream>
#include <iostream>
.
.
.
uLong cP;
ifstream fP ("Prim1.txt");        //Primzahl 1 laden

fP >> cP;
    if(fP.good()) 
    {
        cout << cP << endl;            //char ausgeben

    }
    else
    {           
        cout << "error reading!" << endl; // kann nicht gelesen werden

    }
    fP.close();                              // Handle - schliesen

.
.
. 

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

01.03.2010, 17:52

Re: aus Text-Dateien lesen

Jetzt wär vielleicht noch interessant was cP eigentlich is...

Zitat von »"Task-Manager"«

EDIT: die Text Datei liegt im Debug Ordner bei der exe und heist genau so....


Und schau halt mal nach ob die Datei richtig geöffnet wird...
Wenn dus aus der IDE startest wird das Programm standardmäßig in dem Ordner wo die Projektdatei liegt ausgeführt.

Task-Manager

Alter Hase

  • »Task-Manager« ist der Autor dieses Themas

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

5

01.03.2010, 19:34

Re: aus Text-Dateien lesen

Zitat von »"dot"«

Jetzt wär vielleicht noch interessant was cP eigentlich is...

Zitat von »"Task-Manager"«

EDIT: die Text Datei liegt im Debug Ordner bei der exe und heist genau so....


Und schau halt mal nach ob die Datei richtig geöffnet wird...
Wenn dus aus der IDE startest wird das Programm standardmäßig in dem Ordner wo die Projektdatei liegt ausgeführt.

Das wars, ich musste die Datei in den Projekt-Ordner kopieren, im Debug Ordner hat er die Datei nicht gefunden :oops:
und cP hatte ich vergessen sollte eigentlich sP heisen und ist ein string^^

mfg
Task-Manager

jetzt muss ich den string nur noch in nen int casten-.-
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

6

01.03.2010, 19:48

Re: aus Text-Dateien lesen

Zitat von »"Task-Manager"«

Projekt-Ordner kopieren, im Debug Ordner hat er die Datei nicht gefunden

Das ist kein Grund zur scham... Wenn du von VC++ aus debuggst, verwendet er die Dateien aus dem Projektordner; Wenn du die exe im Debug/Release Ordner anklickst, dann nimmt er die aus dem entsprechenden Ordner.
Mein Tipp: einen Ordner 'Data' im Projektordner (also z.B. C:/Projekte/Projekt1/, nicht C:/Projekte/Projekt1/Projekt1/) und dann statt "Datei.txt" "../Data/Datei.txt" und du hast keine Probleme mehr ;) Und brauchst zudem nicht ständig - bei jeder änderung - in jeden Ordner kopieren.

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

Task-Manager

Alter Hase

  • »Task-Manager« ist der Autor dieses Themas

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

7

01.03.2010, 21:10

Re: aus Text-Dateien lesen

Zitat von »"CBenni::O"«

Zitat von »"Task-Manager"«

Projekt-Ordner kopieren, im Debug Ordner hat er die Datei nicht gefunden

Das ist kein Grund zur scham... Wenn du von VC++ aus debuggst, verwendet er die Dateien aus dem Projektordner; Wenn du die exe im Debug/Release Ordner anklickst, dann nimmt er die aus dem entsprechenden Ordner.
Mein Tipp: einen Ordner 'Data' im Projektordner (also z.B. C:/Projekte/Projekt1/, nicht C:/Projekte/Projekt1/Projekt1/) und dann statt "Datei.txt" "../Data/Datei.txt" und du hast keine Probleme mehr ;) Und brauchst zudem nicht ständig - bei jeder änderung - in jeden Ordner kopieren.

mfg CBenni::O

thx gleich geändert :D

nur hab ich jetzt erneut ein Problem-.- (Das Projekt will einfach nicht fertig werden)

und zwar hab ich den Text in einen String ausgelesen und wollte jetzt den string in einen int casten:

C-/C++-Quelltext

1
2
3
istringstream zahl2(sQ);                
    zahl2 >> iQ;                            
    cout << iQ << endl;

sQ ist die Zahl(24-stelig) als String und wird ohne probleme ausgegeben.
Der int-wert iQ bleibt jedoch auf 0-.- Noch nichteinmal einf Fehler wird ausgespuckt :/ hab erstmal gedacht es liegt an der länge, daher hab ich nen unsigned long int draus gemacht... -> keine Wirkung iQ bleibt 0-.-

mfg
Task-Manager
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

01.03.2010, 21:21

24 stellig is schon recht ordentlich das wirst du auch mit long int nicht schaffen. Schonmal versucht obs mit ner kleineren Zahl geht?

Task-Manager

Alter Hase

  • »Task-Manager« ist der Autor dieses Themas

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

9

01.03.2010, 21:30

Zitat von »"dot"«

24 stellig is schon recht ordentlich das wirst du auch mit long int nicht schaffen. Schonmal versucht obs mit ner kleineren Zahl geht?

jo geht thx :/
ich bin zu müde^^ mit 8 stellen geht int mit unsgined int bekommt er die doppelte länge auf die reihe.

mfg und gn8
Task-Manager
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

10

01.03.2010, 21:36

Und wenn du solche Zahlen brauchst:

Eine Klasse, welche einen int und einen int-übertrag speichert, d.h. wenn der erste int überläuft, den zweiten um 1 erhöhen; dafür gibts auch die entsprechenden Bibliotheken...

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

Werbeanzeige