יש כבר פונקציות שעושות את ההמרה
נסה את WideCharToMultiByte, אתה יכול להשתמש בה בחלונות (בין אם אפליקציה רגילה או קונסול). גם ל- std::wstring אמור להיות משהו כזה היות והמחרוזות של הספריה הסטנדרטית אמורות לתמוך ב-locales. בכל אופן, יש גם את המחרוזות wsnprintf ובעצם את כל הפונקציות לטיפול במחרוזות, בגרסתן ה-wide. אין שום צורך לכתוב משהו מחדש.