Bonjour à tous,
Est-ce que vous pouvez me dire si le code suivant est valide par rapport à la durée de vie de la string renvoyée?
J'ai un doute sur le faite que la chaine renvoyée par c_str() soit encore valide lorsque je la manipule dans le constructeur de Foo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 struct Foo { Foo(char const* s) { long len = lstrlen(s); this->bstrVal = ::SysAllocStringLen(NULL, len); if(len) { long rc = MultiByteToWideChar(CP_ACP, 0, s, len, bstrVal, len); if(rc!=-1) this->bstrVal[rc] = 0; } } private: BSTR bstrVal; }; std::string bar() { std::string result; result = "Action"; return result; } int main() { Foo f(bar.c_str()); }
Partager