Avatar ·

std::wstring vs std::string: quando usar Unicode e quando usar ASCII em C++?

Olá a todos! Sou um desenvolvedor C++ iniciante e fico constantemente confuso com a diferença entre std::wstring e std::string. Li que std::string é para strings "comuns" e std::wstring para Unicode. Mas na prática, tenho muitos problemas.\n\nAqui está um exemplo: estou escrevendo um programa que lê nomes de arquivos de uma pasta. Alguns arquivos contêm cirílico, por exemplo "отчет.docx". Usando std::string:\n\n```cpp\nstd::string filename = "отчет.docx";\nstd::ifstream file(filename);\n```\n\nE o arquivo não abre! Se eu usar std::wstring e wifstream, tudo funciona:\n\n```cpp\nstd::wstring filename = L"отчет.docx";\nstd::wifstream file(filename);\n```\n\nMas então surgem novos problemas: não consigo passar wstring para funções que esperam std::string (por exemplo, em bibliotecas antigas), e ao exibir no c