Najlepszy sposób na przechowywanie va_list do późniejszego użycia w C / C ++

Używam va_list do skonstruowania łańcucha, który jest renderowany.

void Text2D::SetText(const char *szText, ...)

Wszystko jest w porządku i dobrze, ale teraz użytkownik ma możliwość zmiany języka podczas działania aplikacji. Muszę zregenerować wszystkie ciągi tekstowe i ponownie buforować bitmapy tekstowe po inicjalizacji. Chciałbym przechowywać listę va_list i używać jej, gdy tekst ma być wygenerowany.

Aby dać ci trochę więcej informacji, musi to nastąpić w przypadku, gdy łańcuch kluczowy, który tłumaczę, zawiera dynamiczny fragment danych.

"Player Score:%d"

To jest kluczowy ciąg, który muszę przetłumaczyć. Chciałbym przechowywać liczbę (y) podaną na liście va_list do późniejszego wykorzystania (poza zakresem funkcji, która inicjalizuje tekst) w przypadku, gdy trzeba ją ponownie przetłumaczyć po inicjalizacji. Najlepiej byłoby przechowywać kopię va_list do użycia z vsnprintf.

Zrobiłem trochę badań, aby to zrobić i znalazłem kilka sposobów. Niektóre z nich kwestionuję, czy jest to odpowiednia metoda (pod względem stabilności i przenośności).

questionAnswers(5)

yourAnswerToTheQuestion