hey leute,
hab gerade angefangen c++ zu lernen und stoße schon auf die ersten probleme.
kann mir bitte jemand eine gute c++ totalnoob (also für alle ohne c kenntnisse; kann aber javascript und php) einführung empfehlen.
hey leute,
hab gerade angefangen c++ zu lernen und stoße schon auf die ersten probleme.
kann mir bitte jemand eine gute c++ totalnoob (also für alle ohne c kenntnisse; kann aber javascript und php) einführung empfehlen.
ach, und kann mir pls einer sagen was daran nicht stimmt pls
// Includes
#include <iostream>
#include <fstream>
// Initialisiere
int main() {
// Variabeln dafinieren
char Ausgabetext;
std::cout << "Bitte geben Sie nun etwas ein: ";
std::cin >> Ausgabetext;
if (Ausgabetext == "Ja) {
std::cout << "Gut gemacht";
}
else {
std::cout << "Was soll die Kacke?";
}
return(0);
}
Alles anzeigen
beim compilieren erhalte ich diese fehlermeldung:
schritt1.cpp
C:\Users\iMakroy\Documents\Visual Studio 2008\Projects\schritt1.cpp(13) : error C2446: '==': Keine Konvertierung von 'const char *' in 'int'
Es gibt keinen Kontext, in dem diese Konvertierung m”glich ist
C:\Users\iMakroy\Documents\Visual Studio 2008\Projects\schritt1.cpp(13) : error C2040: '==': 'int' unterscheidet sich von 'const char [3]' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
hab nur auf http://www.tutorials.at eines für C
für C++... http://www.gidf.de
1. Fehler: Ausgabetext is char also n buchstabe, da kann nicht "Ja" drin stehen.
2. Fehler: "Ja sollte so stehen "Ja"
3. Fehler: Wofür brauchst du fstream?
1.ok. also char sind nur buchstaben. und was sind dann strings?
2.hm, das "ja" hab ich hier noch falsch. im code habs ich dann gleich gefunden^^
3.das ganze zeug is nur zum üben. macht also keinen tieferen sinn
nein aber den include von fstream brauchst du hier nciht
ist nur unnötig.
ein C-String wäre char *Ausgabetext
Ein C++-String wäre string Ausgabetext
um den C++-String zu verwenden musst du aber das hier noch machen: #include<string>
jo thx, das hat geholfen.
ein gutes tutorial habe ich nun auch gefunden.
aber eine frage habe ich noch, wie kann ich zB das cmd programm ipconfig im main() {...} einbinden? bzw mit parametern aufrufen?
such nach denk funktion system()
jo der system befehl klappt an und fürs sich ganz gut. aber nun habe ich ein kleines problem, dass der befehl nicht ausgeführt wird.
#include <iostream>
using namespace std;
int main() {
// Willkommensnachricht anzeigen
cout<<"\nWillkommen bei der Computerzustandssteuerung V-1.0.0.0\n";
cout<<"Beantworten Sie einfach die Fragen des folgenden Assistenten:\n\n";
// Assistent beginnen
// Fragen was getan werden soll
cout<<"1. Wollen Sie neustarten (n) oder herunterfahren (h)? ";
char aktion;
cin>>aktion;
// Fragen wann damit begonnen werden soll
cout<<"2. Nach wie vielen Sekunden soll dieser Vorgang ausgefuhrt werden? ";
int zeit;
cin>>zeit;
// Sagen was getan wird und Vorgang beginnen
if (aktion == 'n') {
cout<<"\nDer Computer wird in "<<zeit<<" Sekunden neugestartet.\n";
system("shutdown /r /t " + zeit);
}
if (aktion == 'h') {
cout<<"\nDer Computer wird in "<<zeit<<" Sekunden heruntergefahrenn.\n";
system("shutdown /s /t " + zeit);
}
else if (aktion != 'h' && aktion != 'n') {
cout<<"\nDie Eingabe war ungultig.\nBitte wiederholen Sie den Vorgang.\n";
}
// Dafür sorgen, dass das Fenster geöffnet bleibt
cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); cin.get();
}
Alles anzeigen
das ist da ganze programm. wenn man es dann kompiliert und ausführt, habe ich im test "n" und "60" (ohne "") eingegeben.
seltsamerweiße kommt dann die Fehlermeldung "Der Befehl "r" ist entweder falsch geschrieben oder wurde nicht gefunden".
das problem liegt irgendwie damit zusammen dass ich + zeit beim system mache. aber was genau läuft da falsch?
ich bin mir nicht sicher ob man strings und zahlen so einfach miteinander verketten kann...
Versuchs mal mit einem neuen string den du mit sprintf() erstellst.
hab jetzt mal alle möglichen funktionen ausprobiert die dort stehen. nichts hat geholfen. im endeffekt kommt immer wieder die fehlermeldung "Konvertierung des Parameters 1 von 'std::string' in 'const char *' nicht möglich"
ich kapier nur nicht warum der eine konstante vom typ char haben will
genauso wenig ist es mir gelungen aus dem int einfach einen string zu machen. das klappt alles irgendwie nicht
wie gesagt:
ach dir einen C-String mittels sprintf()
damit hast du die konvertierung
und die zahl hängt an deinem string dran
ok, hier ist der neue angepasste code
und da meldet er den fehler
xy.cpp
xy.cpp(25) : error C2664: 'sprintf': Konvertierung des Parameters 2 von 'int' in 'const char *' nicht m”glich
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
xy.cpp(26) : error C2664: 'system': Konvertierung des Parameters 1 von 'std::string' in 'const char *' nicht m”glich
Kein benutzerdefinierter Konvertierungsoperator verfgbar, der diese Konvertierung durchfhren kann, oder der Operator kann nicht aufgerufen werden
hab ich da was mit der verwendung der funktion falsch verstanden?
EDIT: der reinterpret_cast hab ich auch schon ausprobiert, ohne erfolg
http://de.wikibooks.org/wiki/C%2B%2B
http://de.wikibooks.org/wiki/C (für C)
http://www.online-tutorials.net/c-c++-c/c++-tu…als-t-1-58.html
Als Buch kann ich C++-Primer empfehlen.
Ich würde einen C++-String erstellen, und den dann verketten:
jo, also ich hab die lösung in nem anderen forum gefunden.
ich hab jetzt einen stringstream erstellt und konnte somit die zahl anhängen und anschließend habe ich ihn genauso wie du es geschrieben hast über system(Befehl.c_str()); ausgeführt.
trotzdem ein dank an alle!
Der stringstream hat den Vorteil, dass alle Datentypen unterstützt werden, die eben diesen operator<< definiert haben. Dieser operator+= vom String unterstützt eben nur bestimmte Typen.
Viele liebe Grüße
The User