سؤال

في الأساس، أريد أن أحصل على برنامجي لاسترداد المتغيرات المختلفة من قرص القرص الصلب للاستخدام في البرنامج. أعتقد، قبل طلب التفاصيل، يجب أن تحقق من أنه ممكن. فعلا؟

إذا كان الأمر كذلك، فما هي أفضل طريقة؟ لقد رأيت استخدام ملفات .ini، لكنني لا أعرف كيفية استرداد البيانات خصيصا من ملفات .ini. هل هو نفس الملف النصي الذي قمت بعبثته للتأكد من أن المتغيرات ستكون دائما على خط X؟ على سبيل المثال:

ifstream variables("variables.ini");

//some code later
//assume line 'x' holds a variable

if(variables.good())
{
   variables.get(x);
}

//or whatever =/

أنا نوع من الخسارة لما يجب القيام به هنا.

تحرير: لغتي الاختيار هي C ++.

هل كانت مفيدة؟

المحلول

أول أسئلة تحتاج إلى معالجها هي ومن السبب. خياراتك على كيف سوف تتبع من هؤلاء.

إذن من (أو ماذا) سيتم الوصول إلى البيانات؟ إذا كان البرنامج نفسه فقط، فيمكنك تخزين البيانات ومع ذلك تريد - الملف الثنائي، XML، قاعدة البيانات، ملف INI، أيا كان. ومع ذلك، إذا كانت البيانات تحتاج إلى أن تكون سهلة الاستخدام للمستخدم حتى يتمكنوا من تغيير الأمر قبل التشغيل ثم ملف نصي مثل INI، والذي يمكن تحريره بسهولة، من المنطقي. من أجل تحرير البيانات المخزنة في تنسيقات أخرى قد تضطر إلى كتابة برنامج منفصل تماما فقط لمعالجة المعلمات المخزنة. ربما هذا منطقي في وضعك أو ربما ليس كذلك سيكون أكثر عمل.

إذا اخترت الذهاب إلى مسار INI، فأنت على الطريق الصحيح. هم مجرد ملفات نصية. التنسيق الشائع هو الحصول على أقسام (عادة بين أقواس)، ثم أزواج المفتاح / القيمة داخل الأقسام. عادة ما تبدأ خطوط التعليقات مع الفاصلة المنقوطة، لمسة لطيفة للمستخدمين الذين قد يرغبون في تقلبهم ذهابا وإيابا بين الإعدادات.

لذلك شيء مثل هذا:

[System]
    datapath = /home/me/data

[Application]
    start_count = 12
;   start_count = 20  //this is a comment

لا داعي للقلق بشأن خطوط محددة لبياناتك. تقرأ للتو من خلال خط الملف حسب الخط. خطوط فارغة أو تعليق الحصول على قذف. تحيط علما بما أقيمه وأنت تعالج أزواج المفتاح / القيمة.

هناك العديد من الطرق لتخزين الملف المحور في البرنامج الخاص بك. قد يكون بسيطة واحدة لتسليم اسم القسم والمفتاح في مفتاح الخريطة. ستكون القيمة (من زوج المفتاح / القيمة) بيانات الخريطة.

لذلك "SystemDatapath" قد يكون مفتاح خريطة واحدة وستكون قيمتها "/ الصفحة الرئيسية / لي / البيانات". عندما يحتاج البرنامج إلى استخدام القيم، فهو فقط يبدو عن طريق المفتاح.

هذا هو الأساسيات. في النهاية سوف ترغب في تزيينها. على سبيل المثال، طرق لاسترداد القيم حسب النوع. على سبيل المثال getstring ()، getinteger ()، getfloat ()، إلخ.

نصائح أخرى

يمكنك تحديد تنسيق ملف .ini للتطبيق الخاص بك. عادة ما أعمل مع XML لأنه ثم يمكنك تنظيم معلوماتك عن طريق النطاق وهناك بالفعل مجموعة من Libs لمعالجة تخزين واسترجاع المعلومات من أشجار XML.

تحرير: ل C ++ - http://xerces.apache.org/xerces-c/

إذا كنت ستسحب القيم من الملفات بشكل متكرر، وخاصة إذا كنت بحاجة إلى تحديث هذه القيم (تستمر) هذه القيم، فإن قاعدة بيانات هي خيار رائع. كما أنه سيعطيك أداء جيدا كما ينمو مجموعة البيانات الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top