BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- C++ Einzelnes Zeichen eines AnsiStrings (http://www.black-board.net/thread.php?threadid=8115)
Geschrieben von Counie am 27.10.2002 um 19:00:
Einzelnes Zeichen eines AnsiStrings
Kann mir jmd. sagen, wie ich bei nem AnsiString eine bestimmte Position auslesen kann!?!?
Allso z.B. das mir das Programm sagt, die 3.Position von "hallo" ist ein "l" !?!?
Danke, Counie
Geschrieben von LX am 27.10.2002 um 19:43:
Strings werden in C/C++ doch behandelt wie Arrays vom Typ Character. Ergo müsste es wie in folgendem Beispiel bei dir funxen:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
|
#include <stdio.h>
int main()
{
char Hallo[] = "hallo";
printf("%c",Hallo[3]);
return (0);
} |
|
Hallo[3] gibt dir also das 4. Zeichen (Arrays fangen bei 0 an) innerhalb von Hallo aus.
Geschrieben von Counie am 27.10.2002 um 20:09:
Ne, das geht irgendwie auch nich.
Ich beschreibs mal näher:
Ich habe 2 Eingabefelder (Edit1 und Edit2)
in Edit1 schreibe ich irgendeinen Satz und speichere den den in einer Variablen
...
Ansistring e1 = Edit1 -> Text;
AnsiString ein_wort = "";
for(i=0; i<6; i++)
{
ein_wort + e1[i];
}
Edit2->Text = ein_wort ;
doch entweder es kommen irgendwelche Fehlermeldungen oder
das Programm stürzt ab.
Kann es sein, dass der dadurch nich ne Position überprüft, sondern denkt, es wären mehrere "e1" deklariert worden ???
Geschrieben von phlox81 am 27.10.2002 um 20:24:
Was ist überhaupt AnsiString ?
Meinst du damit STL ansistring ?
Und welche Grafische Oberfläche benutzt du ? (VCL, MFC oder WinApi ?)
www.c-plusplus.de/forumstart.htm
^kann ich in sachen C++ nur empfehlen...
Devil
Geschrieben von LX am 27.10.2002 um 20:33:
Ansistring als Datentyp sacht mir jetzt zugegebenermaßen nix. Aber
code: |
1:
2:
3:
4:
|
for(i=0; i<6; i++)
{
ein_wort + e1[i];
} |
|
wird so nicht viel bringen. Wenn, dann müsste es
code: |
1:
|
ein_wort += e1[i] |
|
sein. Wenn du allerdings nur einen Ausschnitt eines Strings in einen anderen kopieren willst, dann gibt es dafür auch vorgegebene Funktionen (
strcpy() soweit ich mich erinnere).
Geschrieben von HeaD am 27.10.2002 um 20:40:
Das ist doch nicht ANSI C oder ?? Ich kenne Ansistring nur vom C++ Builder also VC oder so...
Ansistring und Char ist was anderes soweit ich weiß und kann auch nicht gleich behandelt werden, soweit ich weiß
Geschrieben von phlox81 am 27.10.2002 um 20:43:
Der Code gibt aber nur das Zeichen an der 6. Stelle des
Strings aus, und wenn dein String kürzer ist, dann ...
code: |
1:
2:
3:
4:
5:
|
for(i=0; i<6; i++)
{
ein_wort=+ e1[i];
} |
|
ergebnis davon währe du kopierst den String in ein_wort.
Bufferoverflow, da der String ja schon vorher endet...
Wenn du nur den Buchstaben haben willst, muss es heissen:
code: |
1:
|
ein_wort = e[i]; |
|
Devil
Geschrieben von Counie am 27.10.2002 um 20:51:
jo, leider.
Ich programiere es mit dem Borland c++ Builder
Und da gibt es halt bei Fenster-Anwendungen statt dem normalen String, den AnsiString
Bei dem geht es auch mit dem + statt =+
aber ich hab mir alle Methoden für den String angeschaut und keine kann mir den Buchstaben an einer Position ausgeben ??
Geschrieben von phlox81 am 27.10.2002 um 20:54:
Hmm, gibts da keine GetAt funktion?
bei CString ist das die Function dafür.
und ansistring ist das Equivalent dazu in der VCL.
Devil
Geschrieben von Counie am 27.10.2002 um 20:55:
ich hab drauf geachtet, dass ich mehr als 6 Zeichen eingebe und hab auch ne Überprüfung gemacht, ohne die er das ganze gar nicht macht.
code: |
1:
2:
3:
4:
5:
6:
|
if(e1.Length() > 6)
{
...
}
|
|
Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH