Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Asciumwandlung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.08.2003, 11:35 Uhr
~Anfängerin
Gast


Hi,
ich habe versucht eine Datei in ASCII umzuwandeln. Klappt auch alles wunderbar, aber wie kann ich Leerzeichen einlesen? Er liest alle Zeichen einzeln ein, nur die Leerzeichen nicht. Wie funktioniert das
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.08.2003, 12:16 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


zeig mal deinen code
Bitte in Codetags damit man den besser lesen kann
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.08.2003, 12:22 Uhr
~Anfängerin
Gast



C++:
void asc()
{
    char eingabe, pfad[100], p[1];
    int ascii, Wahl1;        
    ifstream AltFile;


    
    cout << "Menue 7! Was wollen Sie tun?\n";
    cout << "=============================\n\n";
    
    cout << "1. (D)atei übersetzen.\n";
    cout << "2. (T)ext übersetzen.\n";
    cout << "Eingabe :> ";
    cin >> Wahl1;


    if (Wahl1==1)
    {        

    
        cout << "Welche Datei wollen sie lesen?\n";
        cout << "Eingabe :>  ";
        cin >> pfad;
        cout << "\n\n" << pfad << " Datei\n";
        AltFile.open(pfad);
        cout << "**********************************************************\n";    
        while (!AltFile.eof())
        {
            AltFile >> p[1];
            ascii = p[1];
            cout << p[1] << " = ";
            cout << ascii << endl;

        }
        cout << "\n\n";
        cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n\n";
        //Schließe nun die Datei.
        AltFile.close();
    }

    else
    {
    cout << "Gib einen Buchstaben ein, ich werde dir dann den ASCII Code davon verraten.\n";
    cout << "Druecke 0 zum beenden\n";


    do
    {
        cin >> eingabe;
        ascii = eingabe;
        cout << ascii << "\n";

    } while(eingabe!='0'); //solange eingabe keine 0 war!
    cin.get();
    }
}



--edit: Pablo. [ code ] in [ cpp ] --

Dieser Post wurde am 28.08.2003 um 12:42 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.08.2003, 12:53 Uhr
virtual
Sexiest Bit alive
(Operator)


Nach dem

C++:
AltFile.open(pfad);


Ein

C++:
AltFile.unsetf(ios::skipws);


einfügen. Das gibt es auch als manipultor, aber lassen wir das erst Mal.
Zu erklärung: C++ Streams überlesen Leerzeichen. Das ist in vielen Situation gewünscht und daher default.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.08.2003, 13:28 Uhr
~Anfängerin
Gast


Kannst du mir das vielleicht kurz erklären? Wäre super lieb von dir.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.08.2003, 13:51 Uhr
virtual
Sexiest Bit alive
(Operator)


Mir ist nicht klar, was ich kurz erklären soll, deshalb erklre ich jetzt mal das vermutlich falsche lang:

Alles, was in C++ irgendwie mit Ein- und Ausgabe zu tun hat, wird mit Hilfe von sog. Streams erledigt. Ein Stream kann eine Datei sein (für ein und ausgeben), der Bildschirm (hier natürlich nur Ausgabe), die Tastatur (nur Eingabe), Datenbanken usw. Streams sind also erstmal was sehr allgemeingehaltenes.

Damit nun Streams zwar für alles mögliche eingsetzt werden können, aber gleichzeitig möglichst viel gemeinsam haben (eines der Ziele von Objektorientierung), kann man das Verhalten von Streams beeinfalussen, indem man bestimmte Flags setzt oder löscht. In deinem Fall willst Du, daß der Stream leerzeichen nicht einfach ignoriert, sondern brav an Dich ausliefert. Daher muß das Flag (das nennt sich mit Vor+Nachnamen std::ios::skipws) gelöscht werden (die dafür erforderliche Methode heißt unsetf).

Ich habe jetzt eben nur diese Variant vorgestellt, es gibt aber darüberhinaus auch noch sogenannte Manipulatoren Ein Manipulator manipuliert die Ein- oder Ausgabe von Streams. Damit kann man beispielsweise den Stream dazu nötigen, eine Zahl in Hexadezimalen Format auszugeben (default ist dezimal), man kann einen Eingabestream auch dahingehend manipulieren, daß er Leerzeichen nicht ignoriert:

C++:
    Stream>>std::noskipws;


Dazu muß man aber erstens noch ein

C++:
#include <iomanip>


Einbauen und weiterhin ist dieser manipulator (obwohl Standard) nicht von allen compilern gern gesehen.

Was wolltest Du eigentlich wissen?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 28.08.2003 um 13:51 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.08.2003, 14:19 Uhr
~Anfängerin
Gast


Genau das, super. Perfekt erklärt. Sorry, bin ne Anfängerin, da braucht man immer noch ne Weile.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: