Ok nach einer halben Stunde "WTF" und "Bücher hastig rausgraben" bin ich nun langsam am verzweifeln.
Code:
#include <windows.h>
#include <iostream>
using namespace std;
int main(){
char* text;
char* caption;
cin >> text >> caption;
MessageBox(NULL,text,caption,MB_OK);
}
Das ist mein Code, der eine dynamische MsgBox erstellen soll. Das Problem liegt an der IOStream. Sobal die zweite Variable per CIN gesetzt wird, nimmt die Variable "text" auch den gleichen Wert an.
Ok nach einer halben Stunde "WTF" und "Bücher hastig rausgraben" bin ich nun langsam am verzweifeln.
Code:
#include <windows.h>
#include <iostream>
using namespace std;
int main(){
char* text;
char* caption;
cin >> text >> caption;
MessageBox(NULL,text,caption,MB_OK);
}
Das ist mein Code, der eine dynamische MsgBox erstellen soll. Das Problem liegt an der IOStream. Sobal die zweite Variable per CIN gesetzt wird, nimmt die Variable "text" auch den gleichen Wert an.
Da du die Aufgabe , wie mir scheint , mit C-Strings lösen willst , wäre das eine Möglichkeit das Problem zu lösen .
Code:
int main()
{
char text[1024];
char caption[1024];
scanf("%s%s",text,caption);
MessageBox(NULL,text,caption,MB_OK);
}
Danke für eure Antworten, doch als ich gestern mich zu Bett legte kam mir die Antwort von selber wie eine Granate. Ich habe vergessen, den Pointer auf ein char Array zeigen zulassen und so hat er durch die Zuweisung cin>>text bzw cin>>caption auf den Inputstream an sich gezeigt.
Jetzt geht es:
Code:
#include <windows.h>
#include <iostream>
using namespace std;
int main(){
char* text = new char[10];
char* caption = new char[10];
cin >> text >> caption;
MessageBox(NULL,text,caption,MB_OK);
}
Deine Zeiger zeigen auf keinen Speicher!
Nimm die Stringklasse (std::string).
Hmm ich lese ständig "Benutze std::string! Auf keinen Fall char*!"..
Was ist denn der Vorteil, wenn ich std::string benutze?? Meiner Erfahrung nach kommt man damit nicht weit, weil 99% der Funktionen nur char als Parameter akzeptiert..
Dann muss man die strings dann doch jedes mal aufs neue umwandeln, oder?
Hmm ich lese ständig "Benutze std::string! Auf keinen Fall char*!"..
Was ist denn der Vorteil, wenn ich std::string benutze?? Meiner Erfahrung nach kommt man damit nicht weit, weil 99% der Funktionen nur char als Parameter akzeptiert..
Dann muss man die strings dann doch jedes mal aufs neue umwandeln, oder?
quatsch.
1. speicherallozierung und speicherbereinigung wird von der klasse übernommen
2. es gibt viele konvertierungsmöglichkeiten
3. für funktionen, die const char* brauchen gibts die methode c_str()
4. von welchen funktionen redest du bitte? o.O vielleicht von den C Std Funktionen, aber wohl nicht von den C++ Std Funktionen
5. selbst wenn fast immer const char* gebraucht werden würde, ist es zu umständlich immer const char* zu nutzen. denk mal einfach mal daran, dass du bei const char* immer auf die länge des buffers achten musst und damit auch nicht sehr flexibel bist
6. dann hast du anscheinend ziemlich schlechte erfahrungen, denn man kommt wie schon beschrieben, sehr wohl sehr weit, auch wenn nur const char* akzeptiert wird; wie gesagt, es ist einfach sicherer und komfortabler
7. char* schon mal gar nicht, wie gesagt const char* wird häufig akzeptiert, aber nicht in 99%
Hmm ich lese ständig "Benutze std::string! Auf keinen Fall char*!"..
Was ist denn der Vorteil, wenn ich std::string benutze?? Meiner Erfahrung nach kommt man damit nicht weit, weil 99% der Funktionen nur char als Parameter akzeptiert..
Dann muss man die strings dann doch jedes mal aufs neue umwandeln, oder?
std::string verwaltet intern ein char array, von daher ist das kein Problem.
Dennoch sind C-Strings effizienter...
Und auch nicht unbedingt komplizierter, wenn man sie ins kleinste Detail kennt.
Im Prinzip soltle das jeder selbst entscheiden, ist es kein Nachteil, c-Strings zu nehmen!
Ein dynamisch allozierter C-String ist nicht das kleinste bischen effizienter als ein std::string.
Wenn er auf dem Stack liegt, ja, aber der Unterschied ist minimal, es lohnt sich nicht.
Dennoch sind C-Strings effizienter...
Und auch nicht unbedingt komplizierter, wenn man sie ins kleinste Detail kennt.
Im Prinzip soltle das jeder selbst entscheiden, ist es kein Nachteil, c-Strings zu nehmen!
ähm niemand sagte komplizierter, sondern von der produktivität her ineffizienter
außerdem ist std::string auf dauer gesehen und in großen codes sicherer^^
und wenn du unbedingt irgendeine eigene methode nutzen willst, kannste das ja auch in eine klasse stecken, aber mit einem puren c-string zu arbeiten, finde ich auf dauer zu nervig
ähm niemand sagte komplizierter, sondern von der produktivität her ineffizienter
außerdem ist std::string auf dauer gesehen und in großen codes sicherer^^
und wenn du unbedingt irgendeine eigene methode nutzen willst, kannste das ja auch in eine klasse stecken, aber mit einem puren c-string zu arbeiten, finde ich auf dauer zu nervig
Ich sage ja nicht, dass C-Strings besser wären.
Wenn man jedoch ein erfahrener Programmierer ist, ist es absolut kein Problem auch reine C-Strings zu verwenden...
Having problem Wierd problem with [GUIDE-DETIALED] How to setup a server! 02/10/2010 - EO PServer Hosting - 1 Replies Hellow,
I just used this guide, to set up an EO private server.
Everything is correct, but my AccountServer Keeps bugging.
Can someOne help me ( via TeamViewer, .. ) ?
Thnx,
Greets Joris
[Problem] Problem with server starting - cannot find quest index for PaxHeader 12/22/2009 - Metin2 Private Server - 1 Replies Hello!
I have this same problem as here when i'm starting my server:
http://www.elitepvpers.com/forum/metin2-pserver-di scussions-questions/307143-metin2-serverfiles-ques t-index-fehler.html
But I didn't know the answer.. how to repair this?
Greetings