Variable in einem Befehl?
-
Ich hab das ganze jetzt so gemacht:
#include <iostream.h> // ohne h #include <string.h> #include <conio.h> #include <dos.h> main() { std::string ip,text; using namespace std; char neustart; do { cout<<"Bitte geben Sie eine IP oder einen PC-Name ein: "; cin>>ip; cout<<"Bitte geben Sie den gewünschten Text ein:\n\n"; cin>>text; std::string command = "net send " + ip + " " + text; system (command.c_str()); cout<<"Möchtest du erneut einen Text eingeben [J/N]? "; cin>>neustart;} while (neustart=='N'); getch(); }Hab das "using namespace std;" oben eingebunden, es kommt aber trotzdem immer nur 1 Wort an...Kennt C++ keine Leerzeichen?
Und die Schleife funktioniert auch nicht so wie ich mir das denkt...Es kommt zwar die Abrage, aber egal was ich drück...das Skipt fängt nicht neu von oben an...
edit: Korrigiere! Der Neustart funktioniert jetzt doch! War bloß ein Logik-Fehler von mir. Hatte N statt J drin stehen...
Bleibt nur noch das Problem übrig, dass nur 1 Wort ankommt...
-
Hallo
irgendwie scheinst du die Veränderungen, die ich meinem letzten Post geschrieben habe zu ignorieren...
bis bald
akari
-
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
