Archivlink: javarea.de Forum > Talk Talk > [C++] Arrays ft. Cin
Vollständigen Link anzeigen: javarea.de Forum > Talk Talk > [C++] Arrays ft. Cin

Pages: [1] 2 3 ... nächste » ... Letzte »

geschrieben von Shaddow am 25.09.2004 - 21:47
hi.
Hätt mal ne frage:
Ich will einen Namen einlesen lassen udn lasse deswegen dynamisch Speicher für ein char reservieren. Allerdings möchte ich den Namen eingeben und dann mit Hilfe irgendeiner Funktion erreichen, dass der jeder Buchstabe des Namens in einem Feld einen Arrays steht.
Bsp:
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
André Hagemeier =>
name[0] = 'A';
name[1] = 'n';
name[2] = 'd';
name[3] = 'r';
name[4] = 'é';
name[5] = ' ';
name[6] = 'H';
name[7] = 'a';
name[8] = 'g';
name[9] = 'e';
name[10] = 'm';
name[11] = 'e';
name[12] = 'i';
name[13] = 'e';
name[14] = 'r';


Gibt es da einen MÖglichkeit? Ich möchte nämlich nicht jeden BVuchstaben einzeln einlesen lassen und durch ein enter trennen lassen.
Hoffe ich habe mich verständlich ausgedrückt

geschrieben von Daniel am 25.09.2004 - 22:30
Huhu..

mach dich mal über String Tokenizer schlau. Musst mal googlen, ich glaube damit geht sowas.

Daniel

geschrieben von Shaddow am 25.09.2004 - 23:35
also ich habe jetzt hier was:
http://www.math.uni-wuppertal.de/~a....p22_1.html
ziemlich weit unten sind die Tokenfunktionen, aber um ehrlich zu sein, weiß ich net wirklich welche ich nehmen soll.

geschrieben von Daniel am 25.09.2004 - 23:41
Hmm.. is dafür auch bissi zu kompliziert denke ich. Du kannst auch einfach substr() nehmen. Musste halt nur durch ne Schleife laufen lassen. Und ich denke du musst die string includen.

Daniel

geschrieben von Martin am 26.09.2004 - 11:11
Ave,

mmh, ich bin schon ein bischen länger aus der Materie heraus aber ich glaub behalten zu haben, dass du mit einem Zeiger auf diese char Variable jene dann als ganz normales Array betrachten und bearbeiten kannst.

char * name[128] = "Martin Krüger";

mfg martin

Nachträgliche Änderung: char name[218] = "Martin Krüger" muss es lauten.

geschrieben von Daniel am 26.09.2004 - 11:13
int

geschrieben von Martin am 26.09.2004 - 11:20
Ave,

int gleich integer (4 byte) =>

Der int-Datentyp wird als 4-Byte-Ganzzahl gespeichert.

Mit dem int-Typ können ganze Zahlen von -2.147.483.648 bis einschließlich 2.147.483.647 dargestellt werden.

Der entsprechende Datentyp in .NET Framework ist System.Int32. Die Eigenschaften und Methoden des int-Datentyps stimmen mit denen von System.Int32 überein.


mfg martin

geschrieben von Daniel am 26.09.2004 - 11:23
lol Martin ;)

Ich weis wohl was int ist bzw. was es kann. Ich Frage mich nur wie du so einen char aufteilen willst und in einen int casten bzw. speichern willst

Vlt. bin ich auch noch nicht richtig wach.. aber ich würde ja mal sagen das das net geht ^^

Daniel

geschrieben von Martin am 26.09.2004 - 11:30
Ave,

richtig, deswegen hab ichs auch verändert! ;) zum besseren hoff ich. Beim stöbern in der MSDN ist mir aufgefallen das C und deren Datentypen garnicht mehr verwendet werden.

Bsp. oben: ein Zeiger von Typ char auf ein 128 byte großes Array. Man sollte jetzt jedes Arrayelement per name[1] ansprechen können.

Natürlich kann man sich auch den ASCII Code als Integer zrückgeben lassen können. int i = (int) name[0];

mfg martin

geschrieben von Shaddow am 26.09.2004 - 11:50
Aber ich ahbe doch noch gar kein Array!
Ich hatte mir das so gedacht:

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
#include <iostream.h>
#include <string>
using namespace std;


int main()
{
	char *Name_1;
	char *Name_2;
	string Platzhalter;
	Name_1 = new char[];
	Name_2 = new char[];

	cout << "Geben SIe ihren Namen ein!";
	cin >> Platzhalter;

	for ( int index=0; index < Platzhalter.length; index++)
		Name_1[index] = Platzhalter.substr(index,1);







	delete Name_1;
	delete Name_2;



return 0;
}

geschrieben von Daniel am 26.09.2004 - 11:52
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
string data;
char *name[128];
cin >> data;
for(int i=0; i<data.length(); i++)
name[i]=data[i];


oder so ^^

geschrieben von Shaddow am 26.09.2004 - 11:56
Funzt auch nicht, is doch im Prinzip das selbe, wie meins, blos, dass du Zeiger und ich Dynamische Speicherverwaltung genimmen hab

ach ja falls es jm. interessiert:

hier die Fehlermeldung
Zitat
 orginal geschrieben von Microsoft Visual C++ Complier
--------------------Konfiguration: dat01 - Win32 Debug--------------------
Kompilierung läuft...
dat01.cpp
D:\Programme\MVS C++\MSDev98\MyProjects\alphabet\dat01.cpp(15) : error C2679: Binaerer Operator '>>' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::basic_string<char,struct std::char_traits<char>,class std::allocato
r<char> >' akzeptiert (oder keine geeignete Konvertierung moeglich)
D:\Programme\MVS C++\MSDev98\MyProjects\alphabet\dat01.cpp(17) : error C2297: '<' : Ungültig, da der rechte Operand vom Typ 'unsigned int (__thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::*' ist
D:\Programme\MVS C++\MSDev98\MyProjects\alphabet\dat01.cpp(18) : error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator
<char> >' akzeptiert (oder keine geeignete Konvertierung moeglich)
Fehler beim Ausführen von cl.exe.

dat01.obj - 3 Fehler, 0 Warnung(en)

geschrieben von Daniel am 26.09.2004 - 12:00
Wenn du Speicher dynamisch frei gibst hast du auch einen Zeiger auf den Speicherbereich!

geschrieben von Shaddow am 26.09.2004 - 12:03
Ja und was bringt mir das dann???
Was soll ich mit eienm Zeiger auf den Speicher?
Soll ich den Zeiger auf das Erste Element meines Strngs initialisieren und dann inkrementieren, sodass es alle durchläuft?

geschrieben von Martin am 26.09.2004 - 12:28
Ave jungs

ich hab da ma was vorbereitet.

mfg martin


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.