Я хочу прочитать ini-файл на C++ с использованием 64-битного компилятора visual studio, а GetPrivateProfileString()
не работает для 64-битного компилятора, он просто работает для Win32. Есть ли способ прочитать такой файл, кроме использования GetPrivateProfileString()
??Прочитать ini-файл в C++ с использованием компилятора 64
ответ
Я еще не могу прокомментировать, поэтому я отвечаю.
GetPrivateProfileString()
отлично подходит для меня в Visual Studio 2015 на любой платформе, Win32, а также на x64 и на любой кодировке UNICODE или MBCS.
Дважды проверьте свой код или разместите его, чтобы мы могли посмотреть.
GetPrivateProfileString()
не работает для 64-битного компилятора, он просто работает для Win32.
Это абсолютно неверно. Фактически все функции Win32 доступны как 64-разрядные версии, а GetPrivateProfileString
не является исключением. Если вы не можете заставить его работать, тогда код, который вы написали, неверен. К сожалению, вы не указали этот код, поэтому мы не можем сказать вам, как его исправить.
Убедитесь, что вы пытаетесь передать полный путь к файлу при попытке вызвать эту функцию! Относительные пути не будут иметь желаемого эффекта.
В любом случае, вероятно, вы не должны использовать GetPrivateProfileString
. Как the documentation говорит:
Примечание Эта функция предусмотрена только для совместимости с 16-разрядными приложениями на базе Windows. Приложения должны хранить информацию об инициализации в реестре.
INI-файлы все еще иногда являются разумным выбором - например., в качестве файлов настроек для «переносных» приложений, для которых вы не хотите изменять реестр, но вы все равно не должны использовать функции API Windows Get/SetPrivateProfile*
для чтения и записи этих файлов. Они очень старые, портированные непосредственно из 16-битной Windows и содержат много неожиданного поведения для соображений обратной совместимости. Они также медленны и предлагают очень ограниченные возможности.
Хотя есть много альтернатив, моей личной рекомендацией будет SimpleINI library. Это межплатформенная платформа, использующая стандартную библиотеку C++ и выпущена под лицензией MIT. Просто опустите его и начните использовать его. Я хорошо работаю; Я использую его в одном из моих приложений MFC.
You could also use Boost читать файлы INI.
Я забыл включить
MSDN: «Эта функция предоставляется только для совместимости с 16-разрядными приложениями на базе Windows. Приложения должны хранить информацию об инициализации в реестре». Вероятно, вам понадобится библиотека сторонних разработчиков для чтения ini-файлов. –
Знаете ли вы кого-нибудь? – Rabieh
@Rabieh Просить сторонние ресурсы здесь _offf-topic_ здесь. –