Einem LPSTR etwas anfügen
-
Ich meine mich zu erinnern dass das mit C++03 nicht erlaubt war.
-
-
hustbaer schrieb:
Ich meine mich zu erinnern dass das mit C++03 nicht erlaubt war.
Genau, mit C++03 war das nicht erlaubt.
AFAIK ist das mit C++11 erlaubt, zumindest ist der darunterliegende Speicher zwingend zusammenhängend, wie bei
std::vector<..>
. Allerdings vermisse ich beistd::string
die non-constdata()
-Methode, was wohl ein Defect ist (http://cplusplus.github.io/LWG/lwg-active.html#2391).
-
Nathan schrieb:
EOP schrieb:
Der TE will GetWindowText benutzen. Da macht ein CString wesentlich mehr Sinn als ein std::string.
Wenn er MFC verwendet, ja. Vielleicht aber auch die WinAPI.
CString ist eine frei verfügbares Template das nicht nur mit der MFC verwendet werden kann. Das geht auch mit ATL...
-
Swordfish schrieb:
Meinst Du http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#530 ?
Ich weiss ehrlich gesagt nicht was das Problem/der Grund bei C++03 war. Hab mir nur gemerkt dass es nicht erlaubt ist.
-
Es war schlicht ein Designfehler im Standard. Man dachte daß man Implementierungen eine Freiheit in Form der Möglichkeit von nichtzusammenhängenden Puffern lassen wollte. Keine Implementierung (die ich kenne, gibts eine?) hat jedoch davon gebrauch gemacht so daß es de facto auch vor C++11 funktioniert hat. Mit C++11 kam lediglich die formale Forderung nach einem Puffer am Stück so wie es auch in C++03 für
std::vector<>
garantiert war.
-
hustbaer schrieb:
Swordfish schrieb:
Meinst Du http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#530 ?
Ich weiss ehrlich gesagt nicht was das Problem/der Grund bei C++03 war. Hab mir nur gemerkt dass es nicht erlaubt ist.
War das nicht wegen der COW-Optimierung?
-
de jure? ja. auch.
edit: *linkausgrab* http://stackoverflow.com/a/22148550/3975177
-
Wiedermal - was hat die ganze ausgeartete Diskussion mit der eigentlichen Frage zu tun?
Nix, nix, nix.
-
Und? Ist die Frage des OP denn nicht schon doppelt und dreifach beantwortet? Was soll man noch dazu sagen?