Zweidimensionalen String anlegen? (C-String)
-
Hi,
ich möchte einen zweidimensionalen C-String anlegen, und dann mit Text befüllen. Bisher klappt das nur bei einer Dimension:
#include <iostream> using namespace std; int main () { wchar_t *String = new wchar_t [100]; String = L"hallo"; wcout << String << endl; }Jedoch habe ich jetzt keine Ahnung mehr, wie ich daraus einen zweidimensionalen String baue, und ihn dann auslese. Kann mir da jemand helfen? Danke!
-
das geht so nicht. du produzierst ein Speicherleck, weil du deinem String nur die Addresse eines anderen strings zuweist und dadurch der zeiger auf den reservierten speicherbereich verloren geht.
richtig wäre so:
wchar_t * test = new wchar_t[100]; wstrcpy(test, L"hallo"); cout << test << endl; delete [] test;Zweidimensional, wärs am einfachsten so:
std::vector<std::wstring> texte; texte.push_back(L"fdjak"); texte.push_back(L"fdjak2"); texte.push_back(L"fdjak3"); texte.push_back(L"fdjak4"); // wenns unbedingt mit C-Strings sein soll: (Warum überhaupt?) wchar_t** texte = new wchar_t*[10]; for(int i = 0; i < 10; i ++) { texte[i] = new wchar_t[100]; wstrcpy(texte[i], L"xyzsonstewas"); }
-
Was ist denn bitte ein zweidimensionaler String? Strings sind per Definition eindimensional.
Meinst Du ein Array von Strings?
std::vector<wchar_t*> string_array;
-
du verwendest doch c++, warum nimmst du nicht einfach nen std::string? und am besten noch nen std::vector.
vector<string> vec;viel übersichtlicher

-
Danke dir, jetzt verstehe ich es. Warum es unbedingt C Strings sein müssen? Weil es sich ursprünglich um ein C Projekt handelt, dort gibt es keine so komfortablen Klassen wie std::string. Ich habe das nur in C++ Code demonstriert, da ich erst keine Lust hatte, mir printf () mit den komischen Formatflags anzugucken. Da nahm ich gleich new und std::wcout

Zu deiner ersten Lösung mit dem zweidimensionalen String und dem Vector: Also ich hätte da gleich nen Array von std::strings genommen

-
Da gibts noch ein Problem!
#include <iostream> #include <cstring> using namespace std; int main () { wchar_t **String = new wchar_t *[100]; String [1] = new wchar_t [100]; wstrcpy (String [1], L"Hallo); wcout << String [1]; }error C3861: "wstrcpy": Bezeichner wurde nicht gefunden
-
kennst du google?
http://www.google.de/search?hl=de&q=strcpy+wchar_t&btnG=Suche&meta=
-
kennst du google?
Hmm, ja, lol, lieber kenn ich Google nicht, als wenn ich was falsch erklären würde, und dann so tue, als währe es garnicht meine Schuld ("Kennst du Google?")
Naja, trotzdem vielen Dank, jetzt klappt es.
-
ich wusste es selbst nicht genau. aber ich wusste, wo ich suchen musste, und das erwartet man eigentlich auch erstmal, wenn etwas nicht klappt.