Variable in einem Befehl?



  • Hab den Code ausprobiert, aber er hat nicht funktioniert...Hab die Fehlerbeschreibung auch ein paar Posts weiter oben reingeschrieben...

    Meinst du diese Änderung?:

    getline(cin, text);

    Ich habe nur noch das Prob, dass der Text beim User nicht vollständig ankommt, sondern nur das 1. Wort davon 😕

    Kann es sein, dass C++ keine Leerzeichen unterstützt? Kann man das dem irgendwie beibringen?



  • Hallo

    klar unterstützr C++ Leerzeichen. Die Frage ist eher ob net send leerzeichen unterstützt.
    Du kannst ja auch noch den text in Hochkommas einfassen

    #include <iostream> // ohne .h !
    #include <string> // ohne .h
    #include <conio.h>
    #include <dos.h>
    main()
    {
          std::string ip,text;
          char neustart;
          std::string command;
          do
          {
            cout<<"Bitte geben Sie eine IP oder einen PC-Name ein: ";
            cin>>ip;
            cout<<"Bitte geben Sie den gewünschten Text ein:\n";
            getline(cin, text);
            cout << "Sende Text " << text << std::endl;
            command = "net send " + ip + " \"" + text + "\"";
              system (command.c_str());
            cout<<"Möchtest du noch eine Nachricht schreiben? [J/N] ";
            cin>>neustart;
            }
            while (neustart != 'J');
          getch();
          }
    

    bis bald
    akari



  • Hmmm, hab mal deine Änderungen mit den Anführungsstrichen übernommen..Bringt nix..

    Übrigens: Wenn ich deinen Code in mein Programm übernehme, funktioniert das erst gar nicht...

    PS: Ich denke schon dass net send leerzeichen unterstüzt, wenn man es über den Befehl "Ausführen" bei windows macht, klappt es ja auch 😕

    PPS: Ganz am Anfang, als ich diesen Code hier benutzt habe

    system ("net send IP bla bla bla");
    

    hat es ja auch geklappt 😕

    PPPS: Bei mir sieht das ganze mittlerweile so aus

    #include <iostream.h>
    #include <string.h>
    #include <conio.h>
    #include <dos.h>
    main()
    {
          std::string ip,text;
          char neustart;
          std::string command; 
          do
          {
               //Eingabeaufforderung IP
               cout<<"\n\nBitte geben Sie eine IP oder einen PC-Name an: ";
               cin>>ip;
               //Eingabeaufforderung Text
               cout<<"Bitte geben Sie den gew"<<char (129)<<"nschten Text ein: ";
               cin>>text;
               getline(cin, text);
               cout << "Sende Text " << text << std::endl;           
               command = "net send " + ip + " \"" + text + "\"";
               system (command.c_str());
               cout<<"M"<<char (148)<<"chtest du erneut einen Text eingeben [J/N]? ";
               cin>>neustart;
               }
          while (neustart=='J');
          getch();
          }
    


  • Hallo

    also ich habs nochmal alles bei mir ausprobiert, und so läufts 100%

    #include <iostream> // ohne .h !
    #include <string> // ohne .h
    #include <conio.h>
    #include <dos.h>
    main()
    {
          std::string ip,text;
          char neustart;
          std::string command;
          do
          {
            std::cout<<"Bitte geben Sie eine IP oder einen PC-Name ein: ";
            std::cin>>ip;
            std::cout<<"Bitte geben Sie den gewünschten Text ein:\n";
            getline(std::cin, text);
            std::cout << "Sende Text " << text << std::endl;
            command = "net send " + ip + " \"" + text + "\"";
              system (command.c_str());
            std::cout<<"Moechtest du noch eine Nachricht schreiben? [J/N] ";
            std::cin>>neustart;
            }
            while (neustart != 'N');
          }
    

    Auch mit Leerzeichen im Text.
    Wenn das nicht geht hast du einen nicht Standard-konformen Compiler 😉

    bis bald
    akari



  • Habe "Bloodshed Dev C++"

    Ist der nicht gut?

    PS: Habe gerade deinen übernommen, jetzt zeigt er keine Fehler mehr an bei compilen...Jetzt überspringt er aber die Texteingabe...Soll heißen, ich gebe PC-Namen an und er springt direkt weiter....

    "Nachricht wurde gesendet" , obwohl ich keine geschrieben hab 😕



  • Hallo

    dann machst du etwas falsch bei der Eingabe.
    Bei mir läufts korrekt.

    bis bald
    akari



  • Hmmm, wir kommen der Sache näher...

    Es scheint bei mir an

    getline(std::cin, text);

    zu liegen...Hab es durch

    std::cin>>text;

    ersetzt...Jetzt schickt er zwar die Nachricht, aber auch nur das erste Wort und die Abrfrage ob J oder N wird ganz übersprungen 😕



  • Das liegt daran dass von der letzten Eingabe noch das \n im Eingabepuffer hängt. getline liest nunmal bis zum nächsten \n. Du musst den Eingabepuffer nach einer Eingabe mit >> bis zum \n leeren.

    std::cin.ignore(std::numeric_limits<int>::max(), '\n');
    

    Da allerdings normalerweise sowieso jede Eingabe mit Return abgeschlossen wird empfiehlt es sich oft nur mit getline zu lesen.



  • lol, wenn ich das an den Anfang meines Codes setze geht gar nix mehr...Das Bild bleibt schwarz 😕



  • M4rt!n schrieb:

    lol, wenn ich das an den Anfang meines Codes setze geht gar nix mehr...Das Bild bleibt schwarz 😕

    Du sollst das auch nicht an den Anfang deines Codes setzen.

    LordJaxom schrieb:

    Du musst den Eingabepuffer nach einer Eingabe mit >> bis zum \n leeren.



  • Sorry, versteh ich net...Tut mir Leid dass ich euch sone Arbeit mach 🙄

    Kannst du mir das hier einsetzten?

    #include <iostream.h>
    #include <string.h>
    #include <conio.h>
    #include <dos.h>
    main()
    {
          std::string ip,text;
          char neustart;
          std::string command; 
          cout<<"##########################################################\n## BBSI - Net Send Chat v.0.9b - "<<char (184)<<"2006 by Martin Ehnig  ##\n";
          cout<<"##########################################################\n\n##########################################################\n## Dieser Messenger erm"<<char (148)<<"glicht das Chatten "<<char (129)<<"ber den     ##\n## Microsoft Windows Nachrichtendienst ""NetSend""          ##\n## Bitte bei der Texteingabe alle W"<<char (148)<<"rter mit - trennen! ##\n##########################################################";
          do
          {
               //Eingabeaufforderung IP
               cout<<"\n\nBitte geben Sie eine IP oder einen PC-Name an: ";
               cin>>ip;
               //Eingabeaufforderung Text
               cout<<"Bitte geben Sie den gew"<<char (129)<<"nschten Text ein: ";
               cin>>text;
               cout << ""<<char (154)<<"bertrage...\n";           
               command = "net send "+ip+" \""+text+"\"";
               system (command.c_str());
               cout<<"M"<<char (148)<<"chtest du eine weitere Nachricht schreiben [J/N]? ";
               cin>>neustart;
               }
          while (neustart=='J'||'j');
          getch();
          }
    


  • #include <iostream> //ohne .h
    #include <string> // ohne .h
    #include <conio.h>
    #include <dos.h>
    
    using namespace std; // namespace std öffnen
    
    main()
    {
          std::string ip,text;
          char neustart;
          std::string command;
          cout<<"##########################################################\n## BBSI - Net Send Chat v.0.9b - "<<char (184)<<"2006 by Martin Ehnig  ##\n";
          cout<<"##########################################################\n\n##########################################################\n## Dieser Messenger erm"<<char (148)<<"glicht das Chatten "<<char (129)<<"ber den     ##\n## Microsoft Windows Nachrichtendienst ""NetSend""          ##\n## Bitte bei der Texteingabe alle W"<<char (148)<<"rter mit - trennen! ##\n##########################################################";
          do
          {
               //Eingabeaufforderung IP
               cout<<"\n\nBitte geben Sie eine IP oder einen PC-Name an: ";
               getline(cin, ip); //in getline gewandelt
               //Eingabeaufforderung Text
               cout<<"Bitte geben Sie den gew"<<char (129)<<"nschten Text ein: ";
               getline(cin, text);  //in getline gewandelt
               cout << ""<<char (154)<<"bertrage...\n";          
               command = "net send "+ip+" \""+text+"\"";
               system (command.c_str());
               cout<<"M"<<char (148)<<"chtest du eine weitere Nachricht schreiben [J/N]? ";
               cin>>neustart;
          } while (neustart=='J'||neustart=='j'); // Abbruchbedingung korrigiert
    //      getch(); //Wozu das?
    }
    


  • Funktioniert einwandfrei! Vielen, vielen Dank an euch alle! 🙂

    edit: Doch nicht....Wenn man jetzt bei der Abbruchbedingung "J" oder "j" eingibt wird die IP Eingabeaufforderung übersprungen 😕 und es wird beides angezeigt:

    "Bitte geben Sie eine IP an:...... Bitte geben Sie ihren Text ein:....

    Hier nochmal zum sehen:

    http://home.arcor.de/maggot1612/Unbenannt.JPG

    Der überspringt dann aufeinmal die erste Eingabeaufforderung???



  • #include <iostream> //ohne .h 
    #include <string> // ohne .h 
    #include <conio.h> 
    #include <dos.h> 
    
    using namespace std; // namespace std öffnen 
    
    main() 
    { 
          std::string ip,text; 
          string neustart; 
          std::string command; 
          cout<<"##########################################################\n## BBSI - Net Send Chat v.0.9b - "<<char (184)<<"2006 by Martin Ehnig  ##\n"; 
          cout<<"##########################################################\n\n##########################################################\n## Dieser Messenger erm"<<char (148)<<"glicht das Chatten "<<char (129)<<"ber den     ##\n## Microsoft Windows Nachrichtendienst ""NetSend""          ##\n## Bitte bei der Texteingabe alle W"<<char (148)<<"rter mit - trennen! ##\n##########################################################"; 
          do 
          { 
               //Eingabeaufforderung IP 
               cout<<"\n\nBitte geben Sie eine IP oder einen PC-Name an: "; 
               getline(cin, ip); //in getline gewandelt 
               //Eingabeaufforderung Text 
               cout<<"Bitte geben Sie den gew"<<char (129)<<"nschten Text ein: "; 
               getline(cin, text);  //in getline gewandelt 
               cout << ""<<char (154)<<"bertrage...\n";           
               command = "net send "+ip+" \""+text+"\""; 
               system (command.c_str()); 
               cout<<"M"<<char (148)<<"chtest du eine weitere Nachricht schreiben [J/N]? "; 
               cin>>neustart; 
               cin.ignore(1);
          } while (neustart=="J"|| neustart=="j"); // Abbruchbedingung korrigiert 
    //      getch(); //Wozu das? 
    }
    


  • JETZT funktioniert! Sagst du mir was der Fehler war? Würde mich mal intressieren...

    Gruß Martin



  • Hallo

    EEK hat gar nichst geändert nur nochmal den Quellcode kopiert, den du vorher ignoriert hast 🙄

    bis bald
    akari



  • Er hat das hier unten eingefügt.

    cin.ignore(1);
    


  • Ich habe den Quelltext nicht ignoriert :p

    Ja, das mit dem cin ignore habe ich auch gesehen, aber was hat dieses Kommando für eine Beudeutung? Was wird denn jetzt ignoriert?

    Martin 😉



  • Es wird ein Zeichen aus der Standardeingabe ingnoriert. Das dürfte in diesem Fall ein eoln (Enter) sein.


Anmelden zum Antworten