Lepiej uzywać w funkcjach dynamicznych tablic czy char[] ?

0

Witam. [WinAPI C++]
Mam wiele funkcji w których wczytuję jakiś tekst z Edita. Zawsze się zastanawiałem co jest "lepsze" i dlaczego.
mam do skorzystania 2 funkcje aby obsłużyć tekst. lepiej tworzyć dynamiczną tablicę czy może statyczną?
Wiem, że to pytanie jest żenujące ale to jest coś co nie daje mi spać ;P

 
/// Funkcja 1
void foo(HWND hEdit)
{
    int dlugosc = GetWindowTextLength(hEdit);
    char *t = new char[dlugosc+1];
    GetWindowText(hEdit, t, dlugosc+1);
    /// operacje na tekscie
    delete t;
}
/// Funkcja 2
void foo(HWND hEdit)
{
    int dlugosc = GetWindowTextLength(hEdit);
    char t[dlugosc+1];
    GetWindowText(hEdit, t, dlugosc+1);
    /// operacje na tekscie
}
7

najlepiej obsluzyc to std::string i pozniej robic string.c_str() jezeli wymagany jest char;
http://stackoverflow.com/questions/18814987/c-getwindowtext-and-ignore-non-ansi-characters
http://www.cplusplus.com/forum/windows/108292/

5
  1. lepiej użyć std::string (jak napisał @fasadin )
  2. jeśli robisz 1 przypadek to
delete []t;
  1. funkcja 2 ma prawo nie działać VLA nie jest w standardzie C++, a w standardzie C jest opcjonalnie.
0

W takim razie staram się zwrócić stringa w funkcji pobierającej tekst z edita.
Czy to jest prawidłowy zapis?

string stekst_EDIT(HWND uchwyt){
    string strout;
    auto it = strout.begin();
    GetWindowText(uchwyt, &(*it), GetWindowTextLength(uchwyt));
    return strout;
} 
0

W natchnieniu o wypowiedź fasadina zrobiłem funkcję:

string stekst_EDIT(HWND uchwyt){
    string strout;
    int tLength = GetWindowTextLength(uchwyt);
    char t[tLength+1];
    GetWindowText(uchwyt, t, tLength+1);
    strout = t;
    return strout;
}

ponieważ z przykładów nie za bardzo rozumiem co to znaczy:

basic_string<char>  title(bufsize, 0);

1 użytkowników online, w tym zalogowanych: 0, gości: 1