Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 02:04

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C++ IOStream Problem

Discussion on C++ IOStream Problem within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Xereon's Avatar
 
elite*gold: 0
Join Date: Apr 2009
Posts: 793
Received Thanks: 366
C++ IOStream Problem

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.
Xereon is offline  
Old 03/08/2010, 22:29   #2
 
flo8464's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 161
Received Thanks: 38
Deine Zeiger zeigen auf keinen Speicher!
Nimm die Stringklasse (std::string).
flo8464 is offline  
Old 03/08/2010, 22:31   #3

 
djpromo's Avatar
 
elite*gold: 20
Join Date: Jul 2004
Posts: 5,468
Received Thanks: 1,993
Quote:
Originally Posted by flo8464 View Post
Deine Zeiger zeigen auf keinen Speicher!
Nimm die Stringklasse (std::string).
string reicht , er hat ja std schon als namespace deklariert
djpromo is offline  
Old 03/08/2010, 22:32   #4
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by Xereon View Post
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);
}
Shadow992 is offline  
Thanks
1 User
Old 03/08/2010, 23:04   #5
 
flo8464's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 161
Received Thanks: 38
Quote:
Originally Posted by djpromo View Post
string reicht , er hat ja std schon als namespace deklariert
Ich wollte ihn darauf hinweisen, dass ich die Klasse 'string' aus dem Namespace 'std' meine. Gibt ja mehr als eine Klasse zum Wrappen von Strings
flo8464 is offline  
Old 03/09/2010, 07:40   #6
 
Xereon's Avatar
 
elite*gold: 0
Join Date: Apr 2009
Posts: 793
Received Thanks: 366
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);
}
Xereon is offline  
Old 03/09/2010, 15:52   #7
 
flo8464's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 161
Received Thanks: 38
Darauf habe ich dich im ersten Post schon hingewiesen

Auch wenn das nur ein Snippet ist, gib bitte den Speicher frei ! (Und zwar mit delete[] und nicht mit delete)
flo8464 is offline  
Old 03/11/2010, 21:34   #8
 
elite*gold: 99
Join Date: Oct 2008
Posts: 2,708
Received Thanks: 1,726
Quote:
Originally Posted by flo8464 View Post
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?
Frezee is offline  
Old 03/11/2010, 21:41   #9
 
elite*gold: 0
Join Date: Nov 2009
Posts: 136
Received Thanks: 24
c_str ftw!
voteban is offline  
Old 03/11/2010, 22:48   #10


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by Frezee View Post
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%
MrSm!th is offline  
Old 03/12/2010, 14:00   #11
 
flo8464's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 161
Received Thanks: 38
Quote:
Originally Posted by Frezee View Post
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.
flo8464 is offline  
Old 03/12/2010, 15:16   #12
 
Tom94's Avatar
 
elite*gold: 20
Join Date: Oct 2006
Posts: 1,002
Received Thanks: 1,462
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!
Tom94 is offline  
Old 03/12/2010, 16:13   #13
 
flo8464's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 161
Received Thanks: 38
Quote:
Originally Posted by Tom94 View Post
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.
flo8464 is offline  
Old 03/12/2010, 17:04   #14


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by Tom94 View Post
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
MrSm!th is offline  
Old 03/13/2010, 08:41   #15
 
Tom94's Avatar
 
elite*gold: 20
Join Date: Oct 2006
Posts: 1,002
Received Thanks: 1,462
Quote:
Originally Posted by MrSm!th View Post
ä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...
Tom94 is offline  
Reply


Similar Threads Similar Threads
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



All times are GMT +1. The time now is 02:04.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.