Forum: PC-Programmierung String^ nach char*


von Joern (Gast)


Lesenswert?

Hi, ich habe volgendes problem:

Ich möchte einen

String^ meinstring;

in ein Array

unsigned char test[10];

packen. Habe bis jetzt nichts zu dem Thema gefunden.

PS: arbeite mit Visual C++ 2005 Express

MFG Jörn M

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Was bitte ist

  String^

für ein Datentyp?

Statt nur das Entwicklungswerkzeug zu nennen, könnte es mehr als
nützlich sein, auch die verwendete Programmier_sprache_ zu nennen.

Versuchst Du Dir gerade die Finger in C, C++ oder in "managed C++" zu
brechen?

von Joern (Gast)


Lesenswert?

hab ich doch angegeben, c++.

das ist ein string den ich von einer

textBox->text;

zurückbekomme.

von Joe (Gast)


Lesenswert?

Guck Dir mal die Member von CString an.

von Joe (Gast)


Lesenswert?

Konvertieren zwischen verschiedenen Zeichenfolgentypen :

http://msdn2.microsoft.com/de-de/library/ms235631.aspx

von Joern (Gast)


Lesenswert?

Meintest du es ungefähr so?


CString data;
const char* data_char = (LPCTSTR) data;

von Joern (Gast)


Lesenswert?

Okay ich habs gefunden.
Werde es dann nacher mal ausprobieren.


// convert_string_to_wchar.cpp
// compile with: /clr
#include < stdio.h >
#include < stdlib.h >
#include < vcclr.h >

using namespace System;

int main() {
   String ^str = "Hello";

   // Pin memory so GC can't move it while native function is called
   pin_ptr<const wchar_t> wch = PtrToStringChars(str);
   printf_s("%S\n", wch);

   // Conversion to char* :
   // Can just convert wchar_t* to char* using one of the
   // conversion functions such as:
   // WideCharToMultiByte()
   // wcstombs_s()
   // ... etc
   size_t convertedChars = 0;
   size_t  sizeInBytes = ((str->Length + 1) * 2);
   errno_t err = 0;
   char    *ch = (char *)malloc(sizeInBytes);

   err = wcstombs_s(&convertedChars,
                    ch, sizeInBytes,
                    wch, sizeInBytes);
   if (err != 0)
      printf_s("wcstombs_s  failed!\n");

    printf_s("%s\n", ch);
}

von Karl heinz B. (kbucheg)


Lesenswert?

Wenn es tatsächlich ein CString ist, dann ja. Das
kann man so machen.

Aber soviel ich weiss, hat String^ irgendwas mit
managed C++ zu tun. Da hab ich auch noch keine Ahnung
von (und will ich auch nicht).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

String^ ist KEIN C++-Datentyp.

"Managed C++" ist eine von Microsoft verbrochene Perversion, um C++
und das .Net-Geraffel miteinander zu verwurschteln. Mit C++ hat das nur
noch den Namen gemein.

von Bernd (Gast)


Lesenswert?

String^ ist eine Referenz auf einen String in C++/CLI (neu seit VS
2005). Würde mal im Microsoft Forum danach fragen.

von Karl heinz B. (kbucheg)


Lesenswert?

> ... Perversion ... Mit C++ hat das nur noch den Namen gemein.

Du sagst es. Deshalb will ich auch nichts damit zu tun haben.

von arc (Gast)


Lesenswert?

array<Byte>^ test; // Managed Equivalent zu unsigned char []
test = System::Text::Encoding::ASCII->GetBytes(str);

> ... Perversion ... Mit C++ hat das nur noch den Namen gemein.
um mal den alten Gag rauszukramen
thesource.ofallevil.com
theroot.ofallevil.com (Verisign)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.