App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
.NET c++ ^Strings nach arrays und zurück
- Ersteller Nebulus
- Erstellt am
Nebulus
Vice Admiral Special
- Mitglied seit
- 01.03.2006
- Beiträge
- 806
- Renomée
- 53
Hi,
ich verzweifel langsam total...
Ich Programmiere eine kleine GUI und möchte die Felder füllen und auslesen. Wie kann ich einen ^String nach einem c-array und zurück konvertieren ?
String ^s;
char c[64];
Folgendes soll möglich sein Fall 1:
s="Hallo";
c=s; // geht nicht !
Fall2:
c[0]='H';
c[1]='a';
c[2]='l';
c[3]=0x00;
s=c; // geht auch nicht !
Also wie macht mans richtig
DANKE für die Hilfe !
ich verzweifel langsam total...
Ich Programmiere eine kleine GUI und möchte die Felder füllen und auslesen. Wie kann ich einen ^String nach einem c-array und zurück konvertieren ?
String ^s;
char c[64];
Folgendes soll möglich sein Fall 1:
s="Hallo";
c=s; // geht nicht !
Fall2:
c[0]='H';
c[1]='a';
c[2]='l';
c[3]=0x00;
s=c; // geht auch nicht !
Also wie macht mans richtig
DANKE für die Hilfe !
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.665
- Renomée
- 1.249
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
http://msdn.microsoft.com/en-us/library/ezftk57x.aspx
Wenn du wirklich ANSI brauchst, kannst du das hinterher noch konvertieren, z.B. mittels WideCharToMultiByte.
Wenn du wirklich ANSI brauchst, kannst du das hinterher noch konvertieren, z.B. mittels WideCharToMultiByte.
Nightshift
Grand Admiral Special
- Mitglied seit
- 19.08.2002
- Beiträge
- 4.447
- Renomée
- 81
- Standort
- Tief im Weeeeeesss-teheheheeen ;-)
- Mitglied der Planet 3DNow! Kavallerie!
- Aktuelle Projekte
- SIMAP, Docking, POEM
- Lieblingsprojekt
- SIMAP
- Meine Systeme
- Ci7-3770K@3,8 GHz, C2Q 9550@3,4 GHz, AthlonII 620 X4 (+ 2x Ci3-2100, 2x C2D 8400, 9x A4-3420, E-450)
- BOINC-Statistiken
- Prozessor
- Ryzen 7 3700X @stock
- Mainboard
- Gigabyte X570 Aorus Elite
- Kühlung
- Noctua NH-D15 chromax.black
- Speicher
- 2x 16 GB Corsair Vengeance LPX (schwarz) PC4-25600U (DDR4-3200) CL16-18-18-36 @stock
- Grafikprozessor
- Powercolor RX 5700 Red Dragon @stock
- Display
- Eizo FlexScan EV2750
- SSD
- Corsair MP600 1TB M.2 NVMe | Kingston A2000 NVMe PCIe SSD 1TB | Samsung 850 EVO 500 GB
- Optisches Laufwerk
- LG BH16NS55| NEC AD-7203S
- Soundkarte
- onboard :-P der Hardwaregott habe meine Creative Audgiy 2ZS selig
- Gehäuse
- Nanoxia Deep Silence 5, schallgedämmt
- Netzteil
- be quiet! Straight Power E11 650W
- Tastatur
- Razer Ornata Chroma
- Maus
- Logitech Lift for Business
- Betriebssystem
- Win 10 Pro 64bit
- Webbrowser
- Firefox
- Verschiedenes
- rockstable & silent
- Schau Dir das System auf sysprofile.de an
Arrays arbeiten mit Adressen, daher funktioniert der "="-Operator nicht so, wie du ihn einsetzt.
Ist dein Programm in C++ geschrieben? Dann benutz doch die Eigenschaften von String als Klasse, mit den entsprechenden Operatoren.
Ansonsten gibt es noch standard-Funktionen in den C-Bibliotheken, die Strings kopieren können z.B. mit strcopy und Konsorten. Allerdings sind die schon etwas angegraut... ich persönlich würde die nicht verwenden.
Dann gibt es noch die Möglichkeit das Array per Schleife zu beschreiben.
Oder du benutzt die von TiKu genannte Möglichkeit.
Du siehst, du hast die Qual der Wahl.
Ist dein Programm in C++ geschrieben? Dann benutz doch die Eigenschaften von String als Klasse, mit den entsprechenden Operatoren.
Ansonsten gibt es noch standard-Funktionen in den C-Bibliotheken, die Strings kopieren können z.B. mit strcopy und Konsorten. Allerdings sind die schon etwas angegraut... ich persönlich würde die nicht verwenden.
Dann gibt es noch die Möglichkeit das Array per Schleife zu beschreiben.
Oder du benutzt die von TiKu genannte Möglichkeit.
Du siehst, du hast die Qual der Wahl.
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.665
- Renomée
- 1.249
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
C++/CLI, also C++ mit .net.Ist dein Programm in C++ geschrieben?
MP05
Lieutnant
- Mitglied seit
- 29.12.2008
- Beiträge
- 65
- Renomée
- 8
- Mein Laptop
- Acer Aspire TimelineX 3820TG
- Prozessor
- AMD Phenom II 955 @ 3,8 GHz, Stock VCore
- Mainboard
- Gigabyte GA-MA770T-UD3
- Kühlung
- Alpenföhn Groß Clockner
- Speicher
- 2x 2 GB G Skill DDR3-1600 CL9
- Grafikprozessor
- Gainward Radeon HD4850 GS 512 MB
- Display
- Samsung 2333HD 1920x1080
- HDD
- 2 TB Samsung + 500GB WD + 1 TB WD eSATA
- Optisches Laufwerk
- LG GH-22L2P0 DVD-Brenner
- Soundkarte
- Onboard Realtek ALC888
- Gehäuse
- Sharkoon Rebel 9 Economy
- Netzteil
- Chieftec GPS-450AA
- Betriebssystem
- Windows XP SP3 + Windows 7 Professional
- Webbrowser
- Firefox 5
Hi,
die Umwandlung ist ganz einfach:
Schau dir mal die Dokumentation zu den STL-Strings an
http://www.cplusplus.com/reference/string/string/
Ich würde bei einem C++ Programm ausschließlich C++-Strings verwenden, einfach wegen dem Komfort. Und wenn du einen C String für eine eingebundene Bibliothek brauchst einfach immer .c_str() zur Umwandlung verwenden.
Grüße
Marcel
die Umwandlung ist ganz einfach:
Code:
// std::string nach c string
std::string s = "Hallo";
char * c;
c = s.c_str();
// c string nach std::string
char c2[] = "Hallo";
std::string s2 = std::string(c2);
Schau dir mal die Dokumentation zu den STL-Strings an
http://www.cplusplus.com/reference/string/string/
Ich würde bei einem C++ Programm ausschließlich C++-Strings verwenden, einfach wegen dem Komfort. Und wenn du einen C String für eine eingebundene Bibliothek brauchst einfach immer .c_str() zur Umwandlung verwenden.
Grüße
Marcel
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.665
- Renomée
- 1.249
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Ihr wisst schon, dass es hier nicht um std::string -> char-Array geht, sonden um .Net-String -> char-Array? Es geht um C++/CLI, nicht um unmanaged C++.
MP05
Lieutnant
- Mitglied seit
- 29.12.2008
- Beiträge
- 65
- Renomée
- 8
- Mein Laptop
- Acer Aspire TimelineX 3820TG
- Prozessor
- AMD Phenom II 955 @ 3,8 GHz, Stock VCore
- Mainboard
- Gigabyte GA-MA770T-UD3
- Kühlung
- Alpenföhn Groß Clockner
- Speicher
- 2x 2 GB G Skill DDR3-1600 CL9
- Grafikprozessor
- Gainward Radeon HD4850 GS 512 MB
- Display
- Samsung 2333HD 1920x1080
- HDD
- 2 TB Samsung + 500GB WD + 1 TB WD eSATA
- Optisches Laufwerk
- LG GH-22L2P0 DVD-Brenner
- Soundkarte
- Onboard Realtek ALC888
- Gehäuse
- Sharkoon Rebel 9 Economy
- Netzteil
- Chieftec GPS-450AA
- Betriebssystem
- Windows XP SP3 + Windows 7 Professional
- Webbrowser
- Firefox 5
Oh ups. Das habe ich tatsächlich falsch verstanden. Wusste garnicht, dass es da auch nochmal extra eine String-Klasse gibt. Mit .net hatte ich bis jetzt nichts am Hut.
Edit: aber wenn ich mir die Doku so durchlese, dann ist das ja fast Identisch. Gibt auch einen Konstruktor der Char-Pointer entgegennimmt. Und in die andere Richtung ist nur der Name der Methode ein anderer
Edit: aber wenn ich mir die Doku so durchlese, dann ist das ja fast Identisch. Gibt auch einen Konstruktor der Char-Pointer entgegennimmt. Und in die andere Richtung ist nur der Name der Methode ein anderer
Zuletzt bearbeitet:
Ge0rgy
Grand Admiral Special
- Mitglied seit
- 14.07.2006
- Beiträge
- 4.322
- Renomée
- 82
- Mein Laptop
- Lenovo Thinkpad X60s
- Prozessor
- Phenom II 955 BE
- Mainboard
- DFI LanParty DK 790FXB-M3H5
- Kühlung
- Noctua NH-U12P
- Speicher
- 4GB OCZ Platinum DDR1600 7-7-7 @ 1333 6-6-6
- Grafikprozessor
- Radeon 4850 1GB
- HDD
- Western Digital Caviar Black 1TB
- Netzteil
- Enermax Modu 525W
- Betriebssystem
- Linux, Vista x64
- Webbrowser
- Firefox 3.5
Ich befürchte der Threadstarter unterliegt einem ganz andren Problem. Wenn er von C-Strings spricht, liegt wahrscheinlich ANSI-Kodierung vor.
.Net benutzt intern aber immer Unicode.
Ansosnten gilt:
Fall 1:
string s = "TEST";
char[] c = s.ToCharArray( );
Fall 2:
char[] c = { 'h', 'a', 'l', 'l', 'o' };
String s = new String(c);
Aber hier gilt: Strings in .Net sind nicht 0-Terminiert,
Char-Arrays enthalten den Unicode-Wert des Zeichens, nicht ASCII.
Zum Datenaustausch mit C, wären eher die Funktionen der Encoding-Klassen relevant, zum Beispiel
Encoding.ASCII.GetString()
und Encoding.ASCII.GetBytes().
.Net benutzt intern aber immer Unicode.
Ansosnten gilt:
Fall 1:
string s = "TEST";
char[] c = s.ToCharArray( );
Fall 2:
char[] c = { 'h', 'a', 'l', 'l', 'o' };
String s = new String(c);
Aber hier gilt: Strings in .Net sind nicht 0-Terminiert,
Char-Arrays enthalten den Unicode-Wert des Zeichens, nicht ASCII.
Zum Datenaustausch mit C, wären eher die Funktionen der Encoding-Klassen relevant, zum Beispiel
Encoding.ASCII.GetString()
und Encoding.ASCII.GetBytes().
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 431
- Antworten
- 469
- Aufrufe
- 77K
- Antworten
- 29
- Aufrufe
- 13K