eingabe eines textes mittels cin.get

Roncalli

Grünschnabel
Hallo! Ich habe gelesen das std::cin alle whitespaces als Zeichen zum beenden der eingabe ansieht.

Allerdings hab ich hier ein Programm welches was anderes aussagen soll:


Code:
#include <iostream.h>

using namespace std;

int main()                      					 
 {
  char ch;
     do
      { 
         cin.get(ch);
         cout<<(unsigned)ch;
      }
       while (ch!='q');
       return 0;
  }

liesst das programm jetzt so lange ein zeichen ein bis ich ein 'q' eintippe?
wohin gehen die Zeichen?
Was bedeutet das
Code:
(unsigned)ch
?

und müsste die eingabe nicht
Code:
cin>>
lauten?


Ein weiteres Problem habe ich mit dem Programm hier:

Code:
#include <iostream>
#include <fstream>
using namespace std;

int main ()
  {
  ifstream quelle;
  quelle.open ("c:\\temp\\Daten.txt");         		
   if(!quelle) 
        {
           cout<<"Datei nicht geöffnet";
           exit(1);                                 				         
        }
  ofstream ziel;
  ziel.open("c:\\temp\\Kopie.txt");          			   
  char ch;
  while (quelle.get(ch)) ziel<<ch;            			  
  return 0;
  }
öffnet dieses Programm die Datei.txt, ließt sie und schreibt sie dann in Kopie.txt solange Zeichen vorhanden sind?
if(!quelle) wofür steht das "!" ? bedeutet das vielleicht ungleich?
ich kenne nur diese form

Code:
FILE* ein;
  ein = fopen ("c:\\temp\\Daten.txt","r");      

if (ein==NULL)
  {
    printf ("Dateien nicht geöffnet!");
    return 0;
  }

worin besteht der unterschied zu der version im Programm?




Vielen Dank für eure Hilfe!
 
Hi.
Hallo! Ich habe gelesen das std::cin alle whitespaces als Zeichen zum beenden der eingabe ansieht.

Allerdings hab ich hier ein Programm welches was anderes aussagen soll:


Code:
#include <iostream.h>

using namespace std;

int main()                      					 
 {
  char ch;
     do
      { 
         cin.get(ch);
         cout<<(unsigned)ch;
      }
       while (ch!='q');
       return 0;
  }

liesst das programm jetzt so lange ein zeichen ein bis ich ein 'q' eintippe?
Ja. Oder natürlich bis ein Fehler auftritt, dann geht das Programm in eine Endlosschleife und gibt immer wieder das zuletzt gelesene Zeichen aus.
wohin gehen die Zeichen?
cin - Console Input
cout - Console Output
Was bedeutet das
Code:
(unsigned)ch
?
Das ist ein Cast im C-Stil.
und müsste die eingabe nicht
Code:
cin>>
lauten?
Nein, nicht unbedingt. Die >> Operatoren werden für formatierte Eingaben verwendet, die get Methode für unformatierte Eingabe.
Ein weiteres Problem habe ich mit dem Programm hier:

Code:
#include <iostream>
#include <fstream>
using namespace std;

int main ()
  {
  ifstream quelle;
  quelle.open ("c:\\temp\\Daten.txt");         		
   if(!quelle) 
        {
           cout<<"Datei nicht geöffnet";
           exit(1);                                 				         
        }
  ofstream ziel;
  ziel.open("c:\\temp\\Kopie.txt");          			   
  char ch;
  while (quelle.get(ch)) ziel<<ch;            			  
  return 0;
  }
öffnet dieses Programm die Datei.txt, ließt sie und schreibt sie dann in Kopie.txt solange Zeichen vorhanden sind?
Sofern sich auch die Ausgabedatei öffnen lies. Warum probierst du das nicht aus?
if(!quelle) wofür steht das "!" ? bedeutet das vielleicht ungleich?
Wieso ungleich? Ungleich womit?

Suche mal nach boolschen Operatoren in C/C++.
ich kenne nur diese form

Code:
FILE* ein;
  ein = fopen ("c:\\temp\\Daten.txt","r");      

if (ein==NULL)
  {
    printf ("Dateien nicht geöffnet!");
    return 0;
  }

worin besteht der unterschied zu der version im Programm?
Das erste war C++, der letzte Code C.

Gruß
 
Zuletzt bearbeitet:
Hi.


Sofern sich auch die Ausgabedatei öffnen lies. Warum probierst du das nicht aus?

Wieso ungleich? Ungleich womit?

Suche mal nach boolschen Operatoren in C/C++.

Gruß


danke erstmal für deine antwort. ist mir jetzt schon alles etwas klarer jetzt.
auf das ungleich komme ich, weil ich denke wenn die datei nicht == quelle ist, wird sie ja auch nicht geöffnet.
aber irgendwie hab ich das gefühl, dass ich auf dem holzweg bin.
also if(!quelle) ist mir immernoch unklar.werd mal den boolschen operatoren nachgehn.

edit: alles klar mit dem if(!quelle) nicht quelle halt :)

desweiteren weiss ich leider nicht was ein "Cast im C-stil" ist bzw bedeutet.
also mit (unsigned)ch

Code:
cout<<(unsigned)ch;

gib das Zeichen "ch" direkt aus?


ausprobieren kann ich zur zeit nicht, mein c++ programm lässt sich nicht installieren und an einen hochschulrechner komme ich grad nicht ran. ausserdem muss ich in der klausur sowieso alles auf papier lösen, darum muss ich wissen, was genau passiert.
 
Zuletzt bearbeitet:
Erstmal:
C++:
#include <iostream.h>
Wenn das dein Compiler akzeptiert ... fragwürdig ;) Heißt
C++:
#include <iostream>
. Wir wollen uns ja an den Std. halten ;)

desweiteren weiss ich leider nicht was ein "Cast im C-stil" ist bzw bedeutet.
http://www.acm.org/crossroads/xrds3-1/ovp3-1.html
http://www.research.att.com/~bs/bs_faq2.html#static-cast

gib das Zeichen "ch" direkt aus?
Nein, es gibt dem der ASCII-Tabelle entsprechenden Wert des Zeichens aus (bzw. du castest hier char in unsigned int)
 
Zurück