Странность с WritePrivateProfileStringW

Тема в разделе "WASM.BEGINNERS", создана пользователем XshStasX, 11 авг 2010.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Делаю запись значений в файл через WritePrivateProfileStringW, а файл сохраняется в ANSI, почему??...
    Код (Text):
    1.     for(std::map<std::wstring,TValues>::const_iterator r= IniValues.begin();r!=IniValues.end();++r)
    2.         for (TValues::const_iterator val=r->second.begin();val!=r->second.end();++val){
    3.             WritePrivateProfileStringW(r->first.c_str(),val->first.c_str(),val->second.c_str(),fname);
    4.         };
    Весь код прикрепил к теме.
     
  2. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    fname должно быть в Unicode, указывается L"name_ini.ini", тогда файл сохранится в Unicode
     
  3. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Вот что заметил если файл уже создан и он в формате юникода то все пишется в юникоде.
    А в случаи когда WritePrivateProfileStringW пишет в АNSi.
    Это указано при вызове функции только там _Т, но в проекте юникод влючен.
     
  4. Babyshamble

    Babyshamble New Member

    Публикаций:
    0
    Регистрация:
    2 май 2010
    Сообщения:
    67
    А где сказанно что он должен быть не анси ? W указывает на wchar'ность параметров а не структуры файла
     
  5. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    ясно.
     
  6. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    If the file was created using Unicode characters, the function writes Unicode characters to the file. Otherwise, the function writes ANSI characters.