Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » bei "cin" nur der erste Buchstabe

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
11.05.2004, 17:19 Uhr
bear1



Hallo,

also, ich bin neu in C++ und habe ein paar kleine Tests gemacht. Ich habe ein Programm geschrieben, bei dem ein Input und ein Output erfolgen. Nachher noch der Code. Aber jetzt das Problem: Wenn ich den String ausgeben will, dann wird immer nur das erste Zeichen angezeigt. Woran liegt das? Hier ist der Code:


C++:
#include <iostream>
#include <stdlib>

int main() {
cout << "Gib etwas ein: ";
cin >> text;
cout << "\n\nDu hast das hier eingegeben:\n";
cout << text;
}




Ob ihr mir wohl helfen könnt?

Danke im Voraus,

bear1
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.05.2004, 17:28 Uhr
chrisuni



Also ich habe nur schon mal gehabt das wenn ich einen Satz ausgeben lassen wollte wie bsp: " Hallo ich bin da"... hat er mir nur : "Hallo" ausgegeben.
Wenn ich dann statt cin

char Satz[30];
gets (Satz);

nehme klappt es, aber wieso das mit cin nicht geht weiß ich auch nicht...


übrigens wenn Du vorher noch :
char text[30]; in dei main eigeben würdest ... könntest Du zumindest ein Wort "amstück" schreiben, ansonsten einfach gets benutzen, würd aber auch gerne wissen warum das nicht geht... mit cin ...


C++:
#include <iostream>
#include <stdlib>

int main() {
char text[30];               // Du musst  text erstmal deklarieren
cout << "Gib etwas ein: ";
cin >> text;
cout << "\n\nDu hast das hier eingegeben:\n";
cout << text;
}



--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)

Dieser Post wurde am 11.05.2004 um 17:43 Uhr von chrisuni editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.05.2004, 23:02 Uhr
theosoft



Leerzeichen werden als Seperator interpretiert!

Code:
Zitat:
Rogue Wave C++ Standardbibliothek Benutzerhandbuch und Tutorial:
cin ... trennt jeden Wert durch ein Leerzeichen vom nächsten:


Viel Erfolg, Theo
--
ifS (immer fröhliches Schaffen)
theosoft
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.05.2004, 02:48 Uhr
0xdeadbeef
Gott
(Operator)


std::cin trennt das nicht, std::istream::operator>>(std::string) tut es. Um ne ganze Zeile auszulesen, machs so:

C++:
#include <iostream>
#include <string>

int main() {
  std::string test;

  std::cout << "Gib etwas ein: " << std::flush;
  std::getline(std::cin, text);
  std::cout << std::endl
            << std::endl
            << "Du hast das hier eingegeben:" << std::endl
            << text << std::endl;

  return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 12.05.2004 um 02:50 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.05.2004, 09:35 Uhr
chrisuni




C++:
#include <iostream>
#include <string>

int main() {
  std::string test;

  std::cout << "Gib etwas ein: " << std::flush;
  std::getline(std::cin, text);
  std::cout << std::endl
            << std::endl
            << "Du hast das hier eingegeben:" << std::endl
            << text << std::endl;

  return 0;
}





Wenn ich das so in meinen Compiler (dev-cpp) eingebe erhalte ich bei:
getline(std::cin, text); eine Fehlermeldung.
Wie sieht denn der code für getline aus und warum nutzt man nicht gets() ?
--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.05.2004, 11:43 Uhr
typecast
aka loddab
(Operator)


Das liegt an einem Tippfehler. Es wurde die Variable std::string test deklariert, aber die Variable text verwendet. Ändere einfach std::string test in std::string text um. Dann wird es funktionieren.

Zur Verwendung von getline: Die Funktion gets() ist eine C Funktion und der kannst du keinen C++ std::istream überbeben. gets() erwartet einen FILE* als Stream.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.05.2004, 11:56 Uhr
chrisuni




C++:
#include <iostream>
using namespace std;

char spiegeln(char *text);

int main()
{
char wort[10];
cout <<"\nBitte geben Sie ein Wort ein: ";
getline(cin, wort);
cout <<"\Das Wort lautet: " << wort;
}





Das funktioniert bei mir so nicht..... das einzige was bei mir klappt um mehrere Wörter einzulesen ist gets()
--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.05.2004, 18:32 Uhr
0xdeadbeef
Gott
(Operator)


Warum schlägst du dich noch mit char[] rum? Du codest da doch C++.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
13.05.2004, 09:37 Uhr
chrisuni



@ 0xdeadbeef

weil ich in den Vorlesungen nicht so mitgekommen bin und das einzige was ich weiß wie es ungefähr gehen soll, das benutzen eines Char[]´s ist. Außerdem müssen wir teilweise ohne auf z.b. die string.h zurückzugreifen Sachen Programmieren.... so starten bei uns immer Progs, den Rest müssen wir selbst hinzuprogrammieren:


C++:
#include <iostream>
using namespace std;





P.S. ich verstehe aber auch nicht warum einige Leute hier C++ programme schreiben aber printf anstatt von cout benutzen, oder ich hab nicht richtig hingeguckt.
--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
13.05.2004, 14:28 Uhr
0xdeadbeef
Gott
(Operator)


Ach sorum. Ja, dann ist das was anderes.

Und noch eine Sache: "string.h" ist ein alter C-Header, den du in C++ sinnigerweise eh nicht benutzt. Der C++-Header, in dem die Klasse std::string steht, heißt "string"
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
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: