Mehrere Wörter in einer Variable

Dieses Thema im Forum "C/C++" wurde erstellt von sim4000, 03.10.2006.

  1. #1 sim4000, 03.10.2006
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Nabend.

    Hab mal wieder ein Problem, was warschienlich wieder keine goßes is...
    Meine Frage:

    Wie kann ich in eine C++ Variable ganze sätze speichen?
    Code:
    Zb. Hallo. Wie geht es dir?
    Ich habs schon mit vielen verschiedenen Typen versucht.
    Ich bekomm es nicht hin. Sobald der Text ein Leerzeichen endhält macht mein Programm was es will. Is nur ein einfaches Konsolen-Programm.

    Mfg, sim4000.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 daniel.h, 03.10.2006
    daniel.h

    daniel.h IT-ler

    Dabei seit:
    24.01.2004
    Beiträge:
    493
    Zustimmungen:
    0
    Ort:
    Deutschland / Sindelfingen
    Ich weiß nicht wo das Problem ist, bei mir geht das z.B. problemlos.
    Code:
    #include <string>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	string satz = "Hallo. Wie geht es dir?";
    	cout << satz << endl;
    	return 0;
    }
    
    Vielleicht liegt der Fehler in der Eingabe des Satzes, ich weiß ja nicht was dein Programm machen soll ;)
     
  4. #3 sim4000, 03.10.2006
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Das programm soll via cin den Satz aufnehmen und ihn via cout << variable an einer anderen stelle wieder ausgeben. Ungefair so:
    Code:
    string name;
    cout << "geben sie ihren namen ein." << endl;
    cin >> name;
    cout << endl << "hallo" << name << "."
    Nur sobalt der Name mehr als ein Wort hat klappts nich mehr.

    Mfg, sim4000.
     
  5. Xerda

    Xerda KolaLeech Developer

    Dabei seit:
    02.09.2006
    Beiträge:
    17
    Zustimmungen:
    0
    Mit fgets ist das kein Problem darstellen.
    Das Problem dabei ist, das fgets das \n(newline)-Zeichen mit einliest.
    D.h. du musst es selbststaendig entfernen.

    Die Funktionsweise von fgets kannst du hier nachlesen ;)
     
  6. #5 sim4000, 03.10.2006
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Damit kann man doch auf Dateien zugreifen. Wie kann mir das mit dem variablen-Problem weiterhelfen?
    Ich versteh das nich ganz...
     
  7. Xerda

    Xerda KolaLeech Developer

    Dabei seit:
    02.09.2006
    Beiträge:
    17
    Zustimmungen:
    0
    Falsch, du kannst auch Strings einlesen.
    Beispiel:
    fgets(deinstring, stringlaenge, stdin);
     
  8. #7 sim4000, 03.10.2006
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Ich glaube ich warte bis mittwoch.
    Da hab ich in der schule wieder c++.
    Ich checks nicht.

    Ich bekomm vom compiler immer errors

    Code:
    fgets(text, 100, stdin);
    Mfg, sim4000.
     
  9. Xerda

    Xerda KolaLeech Developer

    Dabei seit:
    02.09.2006
    Beiträge:
    17
    Zustimmungen:
    0
    Du musst die Variable voher auch schon mit einer bestimmten Groesse deklarieren ;)
    Ich geh nun schlafen.
    Wenn du genauere Fragen hast dann melde dich bei mir: 307926545.

    Gute Nacht ;)
     
  10. #9 thobit, 03.10.2006
    Zuletzt bearbeitet: 03.10.2006
    thobit

    thobit Routinier

    Dabei seit:
    11.04.2006
    Beiträge:
    265
    Zustimmungen:
    0
    Es kann ja sein, dass ich mich gewaltig irre, aber in meinem Hinterkopf spuckt da noch eine Verbindung von Pointern beim Einsatz von Strings rum.
    Ein String ist ja nichts weiter als ein array mehrerer Zellen vom Typ char. Daher musste doch ein String als ein Zeiger auf das erste Feld von char definiert werden, oder?
    Ala:

    char* name["length"];

    oder sowas in der Art. Ich weiß es gerade nicht genau, kann es aber auch nicht testen, da mein compiler aus irgendwelchen Gründen gerade nicht will (verdammte *********).
    Dann könnte er doch auch wie gewohnt mit cin/cout arbeiten. Werde morgen früh dazu nochmal genauere Gedanken fassen.

    (Falls ich hier Blödsinn schreib verzeiht mir, bin gerade leicht alkoholisiert von der Wiedervereinigungsparty zurück)
     
  11. #10 hazelnoot, 03.10.2006
    hazelnoot

    hazelnoot www.mywm.dl.am

    Dabei seit:
    13.10.2005
    Beiträge:
    377
    Zustimmungen:
    0
    Ort:
    in Geiersberg
    dass zuerst speicher da sein muss fuer einen array damit man was einlesen kann ist klar. daher wuerde ich ihn nicht so anlegen
    char *arr[length];
    sondern so:
    char arr[length];

    dann hast damit sicher kein prob!

    mfg hazelnoot
     
  12. #11 supersucker, 03.10.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Leute, macht es doch nicht so kompliziert....

    Für sowas gibt es getline()..

    Code:
    int main() {
    cout << "Satz eingeben: ";
    String Eingabe;
    getline(cin, Eingabe);
    cout << Eingabe;
    
    }
    
     
  13. #12 root1992, 03.10.2006
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    Soviel ich weis ist, wenn man cin verwendit die Ausgabe von folgender Eigabe:
    Eingabe: Hallo Welt\n
    Ausgabe: Hallo
    Da soviel ich weis cin bis zum nächsten Leerzeichen einen String einliest. Und Whitespaces davor auch abschneidet. So kannst du es meiner Meinung nach nur Zeichenweise einlesen.
    -------------------------------
    #include <iostream>
    using namespace std;
    char puffer[1];
    char ausgabe[100];

    int main(){

    int i=0;

    while ((puffer[0]=cin.get()) != '\n'){
    ausgabe=puffer[0];

    if (i<=100)
    i++;
    else
    break;

    }
    ausgabe='\0';

    cout << "\n" << ausgabe <<"\n";

    }
    --------------------------------------------
    Somit kannst du auch z.B. tabs, ... entwerten.
     
  14. #13 supersucker, 03.10.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    @root192

    Du hast meinen Post nicht gelesen oder?

    Warum machst du etwas was so einfach ist (siehe meinen Post) so kompliziert?

    Und dazu noch fehleranfällig ohne Ende.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 sim4000, 03.10.2006
    Zuletzt bearbeitet: 03.10.2006
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Wenn ich das so mache wie supersucker, dann überspringt er die Variable "text".
    Ich Poste am Besten mal den Source. Is ja nich viel.

    Code:
    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif
    
    #include <string>
    #include <iostream>
    #include <cstdlib>
    #include <stdio.h>
    
    using namespace std;
    
    
    //***************************************************************************************
    string start ("* Bannercreator 1.0 - Erstelle ein Banner mit deiner Nachricht. *");    //
                                                                                           //
    void mitteilung_sternchen(void) {                                                      //
      int groesse_mitteilung = start.size();                                               //	*****************************************************************
      for(int i=groesse_mitteilung; i!=0; i--) { cout << "*"; }                           //	*                                                               *
    }                                                                                      //	* Bannercreator 1.0 - Erstelle ein Banner mit deiner Nachricht. *
                                                                                           //	*                                                               *
    void mt_leerzeile(void) {                                                              //	*****************************************************************
      int groesse_mitteilung = start.size();                                               //
      cout << "*";                                                                         //
      for(int i=groesse_mitteilung-2; i!=0; i--) { cout << " "; }                         //
      cout << "*";                                                                         //
    }                                                                                      //
    //***************************************************************************************
    
    string uzeichen;
    string text;
    char antwort;
    
    
    void rahmen(void) {
      int groesse = text.size();
      for(int i=groesse+4; i!=0; i--) { cout << uzeichen; }
    }
    
    void leerzeile(void) {
      int groesse = text.size();
      for(int i=groesse+2; i!=0; i--) { cout << " "; }
    }
    
    void nachricht(void) {
      cout << uzeichen << " " << text << " " << uzeichen;
    }
    
    
    int main(int argc, char *argv[]) {
    
      mitteilung_sternchen(); cout << endl;				//
      mt_leerzeile(); cout << endl;					//
      cout << start << endl;					//  Begrüssungsmeldung
      mt_leerzeile(); cout << endl;					//
      mitteilung_sternchen(); cout << endl << endl << endl;		//
    
      cout << "Um ein Banner zu erstellen, bitte Umrandungszeichen und Text angeben." << endl << endl;
    
      cout << "Bitte Umrandungszeichen eingeben (*, #, ...)" <<  endl;
      cin >> uzeichen;
      cout << endl << "Bitte Text eingeben" << endl;
      [B]getline(cin, text);[/B] [B]//Variable text ist der Satz[/B]
      cout << endl << endl << "Umrandungszeichen: " << uzeichen << endl;
      cout << "Text: " << text << endl << endl;
      cout << "Sind diese Angaben richtig? (j/n)" << endl;
      cin >> antwort;
      cout << endl;
    
    while(antwort != 'j');
    
      rahmen(); cout << endl;
      cout << uzeichen; leerzeile(); cout << uzeichen << endl;
      nachricht(); cout << endl;
      cout << uzeichen; leerzeile(); cout << uzeichen << endl;
      rahmen(); cout << endl << endl;
    
      cout << "Dieses Banner kannst du einfach in ein Textdokument kopieren." << endl << "Viel Spass damit." << endl << endl << endl;
      return EXIT_SUCCESS;
    }
    @supersucker
    Bloß wenn ich dein SCript sp wie dus gepostet hast aufführe geht es.
     
  17. Xerda

    Xerda KolaLeech Developer

    Dabei seit:
    02.09.2006
    Beiträge:
    17
    Zustimmungen:
    0
    Ich wuesste nicht was an ,,fgets()'' so schwer sein soll.
     
Thema:

Mehrere Wörter in einer Variable

Die Seite wird geladen...

Mehrere Wörter in einer Variable - Ähnliche Themen

  1. [Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

    [Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter: Hallo zusammen, ich bin an einem Punkt angekommen, wo ich nicht mehr weiter komme und hoffe ihr könnt mir weiter helfen. Anbei ein Ausschnitt aus...
  2. Mehrere SSL Vhosts

    Mehrere SSL Vhosts: Hey zusammen, Ich habe zwei verschiedene VHosts mit einem Apache 2.4 am rennen. <VirtualHost *:80> ServerName test1.de DocumentRoot...
  3. Reverse Proxy einrichten für mehrere subdomains über Port 80

    Reverse Proxy einrichten für mehrere subdomains über Port 80: Guten Tag zusammen. Ich habe folgendes Problem. Bei mir laufen 2 Apache-Tomcat Services. Einer auf Port 8880 und einer auf Port 8080. Nun habe...
  4. Problem mit 1er Freigabe und mehreren Ordnern

    Problem mit 1er Freigabe und mehreren Ordnern: Hallo Ich habe auf unseren home Server das Neuste Debian mit der neusten stabilen Samba Version. Ich habe eine Freigabe die die mehrere Ordner...
  5. Artikel: Synergy - Mehrere PCs mit einer Maus steuern

    Artikel: Synergy - Mehrere PCs mit einer Maus steuern: Auf dem Schreibtisch steht oft mehr als ein Monitor, und oft gesellt sich dazu noch ein Notebook. Mit der Client-Server-Anwendung Synergy lassen...