Salve a tutti, sono nuovo nel forum, molti anni fa avevo imparato i fondamenti del linguaggio Visual Basic, e dopo una lunga pausa ho deciso di imparare nuovamente a programmare, questa volta con il pi� versatile C++. Sto utilizzando l'apposita guida di questo sito, aggiungendo e modificando codice nella classica applicazione (console) HelloWorld. La parte di codice in questione � (Origine.cpp):
codice:
#include <iostream>
#include <Windows.h>
#include <winnt.h>

class Ciao
{
public:
void saludandonio()
{
std::cout << "Saluda Andonio!" << std::endl;
}

LPSTR stampa_oem(char tds[]) //il programma viene eseguito, ma non viene stampata correttamente la �, viene stampata una U accentata
{
CharToOemBuffA(tds, tds, sizeof(tds));
std::cout << tds;
return tds;
}
};

int main()
{
Ciao ciao;
ciao.saludandonio();
system("pause");

char carattere[] = "perch����";
std::cout << carattere << std::endl; //stampa errata con simboli strani
ciao.stampa_oem(carattere); //stampa ancora errata
std::cout << std::endl;

CharToOemBuffA(carattere, carattere, sizeof(carattere)); //Effettua una conversione in-place della stringa al codepage OEM.
std::cout << carattere << std::endl; //stampa corretta

system("pause");
}
Ho fatto numerose prove con tipi diversi da LPSTR, ciononostante non sono mai riuscito a ottenere la stampa corretta a console (che viene ottenuta solo con la chiamata "non nidificata" di CharToOEMBuffA). LPCSTR d� risultati analoghi, altri tipi come char generano errori di compilazione. anche il tentativo:
codice:
char stampa_oem[](char tds[])
genera errori. Chiedo quindi quale tipo possa essere dichiarato per ottenere un output corretto dalla funzione stampa_oem.
Utilizzo la versione gratuita di Visual Studio 2017 su Windows 10, grazie in anticipo a chi vorr� aiutarmi!