Originariamente inviato da shodan
*Standing ovation*

Originariamente inviato da gianvituzzi
ok, quindi il codice corretto è questo:
... quasi... se usi i generic text mappings devi includere tchar.h, specificare _tmain al posto di main e usare, a seconda delle impostazioni di carattere, cout o wcout (operazione che puoi semplificare con una macro).
codice:
#include <iostream>
#include <string>
#include <cstdlib>
#include <TCHAR.h>
#include <shlobj.h>

#ifdef _UNICODE
#define tcout wcout
#define tcin wcin
#else
#define tcout cout
#define tcin cin
#endif

int _tmain()
{
	TCHAR szPath[MAX_PATH] = {0};

	HRESULT res = SHGetFolderPath(NULL,
								  CSIDL_LOCAL_APPDATA|CSIDL_FLAG_DONT_VERIFY,
								  NULL,
								  0,
								  szPath);

	std::tcout << szPath << std::endl;

	std::cout<<_T("Premere Invio per continuare... ");
        std::tcin.sync();
        std::tcin.ignore();
	return EXIT_SUCCESS;
}
D'altra parte se intendi compilare solo per Unicode puoi invece usare direttamente i wchar_t, wcout e wcin.
solo una cosa, se volessi poi aggiungere il nome di un file o cmq un percorso aggiuntivo c'è una funzione speciale che magari si occupa di tradurre le varie slash e gli spazi nel nome oppure devo fare tutto a mano?
PathAppend; dai un'occhiata anche alle altre Shell Lightweight API, spesso sono di grande comodità.