Здравствуйте, Tuo_Bellas, Вы писали:

T_B>VC8, XP SP2


#include <iostream>
#include <fstream>

int main()
{
  std::ofstream os("тест.txt"); // (*)
  if (os)
  {
    os << "test";
  }

  std::ofstream osW(L"тест.txt"); // (**) Note unicode here
  if (osW)
  {
    osW << "test";
  }
  return 0;
}

T_B>Вариант (*) создает файл с именем "òåñò.txt" (набор букв с диакритическими знаками, похоже на неправильный codepage).
T_B>Вариант (**) (который вообще, по идее, компилиться не должен) создает файл с правильным именем "тест.txt".

T_B>Как сделать, чтобы работал первый вариант (*)?


#include <iostream>
#include <fstream>
#include <clocale>

int main()
{
  setlocale( LC_ALL, ".ACP" );
  std::ofstream os("тест.txt"); // (*)
  if (os)
  {
    os << "test";
  }

  return 0;
}
Автор: saproj    Оценить