Gewährleisten Sie die Initialisierung der Smartziner [geschlossen]C++

Programme in C++. Entwicklerforum
Anonymous
 Gewährleisten Sie die Initialisierung der Smartziner [geschlossen]

Post by Anonymous »

Ich versuche, die alte Gewohnheit fallen zu lassen und die intelligenten Zeiger zu verwenden.

Code: Select all

int Foo(const std::wstring &catalog, /*...*/)
{
SQLWCHAR *cat = new SQLWCHAR[catalog.length() + 2];
memset( cat, '\0', catalog.length() + 2 );
// copy the catalog name to cat
// perform some work
delete[] cat;
cat = nullptr;
}
< /code>
Mow, der versucht, Smart Zeiger zu verwenden, werde ich es so tun: < /p>
int Foo(const std::wstring &catalog, /*...*/)
{
std::unique_ptr cat = std::make_unique( catalog.length() + 2 );
// copy catalog to cat
// perform some work
}
Meine Frage hier ist: Wie stelle ich sicher, dass die Katze mit \ 0 initialisiert wird? Oder es geschieht bereits, da intelligente Zeiger mit \ 0 (in meinem Fall) initialisiert werden?

Code: Select all

void uc_to_str_cpy(SQLWCHAR *dest, const std::wstring &src)
{
const wchar_t *temp = src.c_str();
while( *dest )
{
dest++;
}
while( *temp )
{
*dest = *temp;
dest++;
temp++;
}
*dest++ = '\0';
*dest = '\0';
}
< /code>
und Ich nennen es mit < /p>
uc_to_str_cpy( cat, catalog );
< /code>
Jetzt ändert sich der Anruf in < /p>
uc_to_str_cpy( cat.get(), catalog );
Aber die Funktion selbst ist gut?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post