Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Array von Strings / Anfängerfrage

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
30.07.2010, 20:32 Uhr
Hochhaus



Hallo allerseits !

kann mir jemand mitteilen, wie man einen String-Array unter C++ definiert ? Mein Anfängerbuch enthält dies leider nicht.

Ich möchte einen Array von 100'000 Strings der Länge von 80 Zeichen definieren.

Code = ? (1 Zeile)

Gruss,


Hochhaus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.07.2010, 02:30 Uhr
0xdeadbeef
Gott
(Operator)



C++:
#include <string>

// ...

std::string array[100000];


Die Strings können dabei eine beliebige Länge annehmen. Allerdings würde ich ein Array dieser Größe nicht auf den Stack packen, sowas kann u.U. zu Problemen mit der Stackgröße führen (ich bin mit JNI mal über so was gestolpert). Besser:

C++:
#include <string>
#include <vector>

// ...

std::vector<std::string> vec(100000);


Damit hast du automatische Speicherverwaltung auf dem Heap und alle praktischen Features eines Vektors (beispielsweise resize).
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.07.2010, 09:16 Uhr
Hochhaus




Zitat von 0xdeadbeef:

C++:
#include <string>

// ...

std::string array[100000];


Die Strings können dabei eine beliebige Länge annehmen. Allerdings würde ich ein Array dieser Größe nicht auf den Stack packen, sowas kann u.U. zu Problemen mit der Stackgröße führen (ich bin mit JNI mal über so was gestolpert). Besser:

C++:
#include <string>
#include <vector>

// ...

std::vector<std::string> vec(100000);


Damit hast du automatische Speicherverwaltung auf dem Heap und alle praktischen Features eines Vektors (beispielsweise resize).



Danke ! Nur weiss ich jetzt nicht, wie die Variable heisst: Es scheinen alles reservierte Wörter zu sein.

Hochhaus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.07.2010, 09:52 Uhr
Tommix




Zitat von Hochhaus:
Nur weiss ich jetzt nicht, wie die Variable heisst: Es scheinen alles reservierte Wörter zu sein.


'Morgen, einmal array und das andere mal vec. Der Haken (siehe auch mein anderes Posting von heute): wenn Du nicht in C++ programmierst, sondern in C++/CLI, dann ist array in der Tat ein Schüsselwort. Das sind zwei verschiedene Welten. In C++/CLI würde man

C++:
cli::array<System::String^>^ myArray = gcnew cli::array<System::String^>(100000);


verwenden und im richtigen C++ sowas wie 0xdeadbeef schrieb.
- Tommix

Dieser Post wurde am 31.07.2010 um 09:53 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.07.2010, 11:17 Uhr
~Hochhaus
Gast



Zitat von Tommix:
[quote Hochhaus] Nur weiss ich jetzt nicht, wie die Variable heisst: Es scheinen alles reservierte Wörter zu sein.


'Morgen, einmal array und das andere mal vec. Der Haken (siehe auch mein anderes Posting von heute): wenn Du nicht in C++ programmierst, sondern in C++/CLI, dann ist array in der Tat ein Schüsselwort. Das sind zwei verschiedene Welten. In C++/CLI würde man

C++:
cli::array<System::String^>^ myArray = gcnew cli::array<System::String^>(100000);


verwenden und im richtigen C++ sowas wie 0xdeadbeef schrieb.
- Tommix[/quote]


Danke. Das war genau das, was ich benötige.

Hochhaus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.07.2010, 15:21 Uhr
Tommix




Zitat von ~Hochhaus:
Das war genau das, was ich benötige.

Beefy wid mich umbringen (Er ist ein großer Fan von C++/CLI).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
31.07.2010, 16:58 Uhr
0xdeadbeef
Gott
(Operator)


C++/CLI ist als Stand-Alone-Sprache eine ziemlich dämliche Idee und hat, jedenfalls wenn man es so programmiert, mit C++ nur am Rande zu tun. Wenn dein Compiler

C++:
cli::array<System::String^>^ myArray = gcnew cli::array<System::String^>(100000);


frisst, ist es kein C++-Compiler.

C++/CLI ist eine Adaptersprache, um C++ an .net anzubinden. Deswegen gibt es darin auch zwei Heaps, zwei Referenztypen, pin_ptr usw. - das ist in seltenen Fällen ganz nett (jedenfalls deutlich besser als JNI), aber wenn man C++ noch nicht beherrscht, macht es wenig Sinn, ein Support-Tool für die Anbindung an .net zu lernen.

Wenn dein Anfängerbuch sowas als C++ bezeichnet, solltest du dir schleunigst ein besseres Buch besorgen. Die zäumen das Pferd von der Seite auf.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
31.07.2010, 17:55 Uhr
~Hochhaus
Gast



Zitat von 0xdeadbeef:
C++/CLI ist als Stand-Alone-Sprache eine ziemlich dämliche Idee und hat, jedenfalls wenn man es so programmiert, mit C++ nur am Rande zu tun. Wenn dein Compiler

C++:
cli::array<System::String^>^ myArray = gcnew cli::array<System::String^>(100000);


frisst, ist es kein C++-Compiler.

C++/CLI ist eine Adaptersprache, um C++ an .net anzubinden. Deswegen gibt es darin auch zwei Heaps, zwei Referenztypen, pin_ptr usw. - das ist in seltenen Fällen ganz nett (jedenfalls deutlich besser als JNI), aber wenn man C++ noch nicht beherrscht, macht es wenig Sinn, ein Support-Tool für die Anbindung an .net zu lernen.

Wenn dein Anfängerbuch sowas als C++ bezeichnet, solltest du dir schleunigst ein besseres Buch besorgen. Die zäumen das Pferd von der Seite auf.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
31.07.2010, 17:56 Uhr
Hochhaus




Zitat von ~Hochhaus:
[quote 0xdeadbeef]C++/CLI ist als Stand-Alone-Sprache eine ziemlich dämliche Idee und hat, jedenfalls wenn man es so programmiert, mit C++ nur am Rande zu tun. Wenn dein Compiler

C++:
cli::array<System::String^>^ myArray = gcnew cli::array<System::String^>(100000);


frisst, ist es kein C++-Compiler.

C++/CLI ist eine Adaptersprache, um C++ an .net anzubinden. Deswegen gibt es darin auch zwei Heaps, zwei Referenztypen, pin_ptr usw. - das ist in seltenen Fällen ganz nett (jedenfalls deutlich besser als JNI), aber wenn man C++ noch nicht beherrscht, macht es wenig Sinn, ein Support-Tool für die Anbindung an .net zu lernen.

Wenn dein Anfängerbuch sowas als C++ bezeichnet, solltest du dir schleunigst ein besseres Buch besorgen. Die zäumen das Pferd von der Seite auf.
[/quote]


Das Buch hat folgenden Titel: "Jetzt lerne ich Visual C++ 2008" von Dirk Louis und ist vom Markt+Technik - Verlag. Vieles ist ganz brauchbar beschrieben - daneben lässt das Buch aber grosse Wissenslücken. So habe ich zum Beispiel keine Druckerunterstützung gefunden. Un wie man grosse String-Arrays definiert, leider auch nicht.

Da ich mich auf dem Gebiet von C++ nicht gut auskenne, kann ich auch kein Urteil über diese Literatur fällen.

Hochhaus


Sorry für den misslungenen Beitrag oben ! Würdet Ihr ihn bitte löschen.

Dieser Post wurde am 31.07.2010 um 18:01 Uhr von Hochhaus editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
31.07.2010, 18:32 Uhr
0xdeadbeef
Gott
(Operator)


Markt + Technik, das passt. Die haben vom Markt mehr Ahnung als von der Technik.

Wenn du ernsthaft C++ lernen willst, empfehle ich den C++-Primer als Einstiegslektüre. Wenn es dir aber mehr um RAD geht, du also schnell dahin kommen willst, kleine Anwendungen zusammenzuklicken, bist du mit C# oder Visual Basic .NET im Zweifel besser dran - der Weg zu C++ ist lang und steinig.

C++/CLI ist, wie gesagt, eine Adaptersprache - weder Fisch noch Fleisch, weil sie zwischen Fisch und Fleisch zu vermitteln versucht. Dafür ist sie auch geeignet, aber in allen anderen Anwendungsfällen würde ich davon weiten Abstand nehmen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: