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 Compilerbis 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.