2016-12-22 5 views
0

Я хочу прочитать ini-файл на C++ с использованием 64-битного компилятора visual studio, а GetPrivateProfileString() не работает для 64-битного компилятора, он просто работает для Win32. Есть ли способ прочитать такой файл, кроме использования GetPrivateProfileString() ??Прочитать ini-файл в C++ с использованием компилятора 64

+2

MSDN: «Эта функция предоставляется только для совместимости с 16-разрядными приложениями на базе Windows. Приложения должны хранить информацию об инициализации в реестре». Вероятно, вам понадобится библиотека сторонних разработчиков для чтения ini-файлов. –

+0

Знаете ли вы кого-нибудь? – Rabieh

+1

@Rabieh Просить сторонние ресурсы здесь _offf-topic_ здесь. –

ответ

0

Я еще не могу прокомментировать, поэтому я отвечаю.
GetPrivateProfileString() отлично подходит для меня в Visual Studio 2015 на любой платформе, Win32, а также на x64 и на любой кодировке UNICODE или MBCS.
Дважды проверьте свой код или разместите его, чтобы мы могли посмотреть.

1

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.

+0

Я забыл включить , так что это вызывало проблему. Спасибо всем – Rabieh