"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية قراءة الأعداد الصحيحة بكفاءة من ملف نصي بأعداد صحيحة متباينة باستخدام ifstream C++؟

كيفية قراءة الأعداد الصحيحة بكفاءة من ملف نصي بأعداد صحيحة متباينة باستخدام ifstream C++؟

تم النشر بتاريخ 2024-11-20
تصفح:916

How to Efficiently Read Integers from a Text File with Varying Integer Counts Using C   ifstream?

قراءة الأعداد الصحيحة من ملف نصي باستخدام C ifstream

يمثل استرداد وتخزين معلومات الرسم البياني المجاورة من ملف نصي إلى متجه تحديًا عندما التعامل مع خطوط عدد صحيح متغير. فيما يلي حل شامل باستخدام ifstream لـ C:

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

#include 
#include 
#include 

std::ifstream infile("text_file.txt");
std::string line;

while (std::getline(infile, line)) {
  std::istringstream iss(line);
  int n;
  std::vector v;

  while (iss >> n) {
    v.push_back(n);
  }

  // Process the vector v
}

ومع ذلك، إذا كان لديك خطوط ذات أعداد صحيحة مختلفة، فهناك حل من سطر واحد يستفيد من الحلقة ومصطلح "البقاء"، من باب المجاملة لوك دانتون:

#include 
#include 
#include 

int main() {
  std::vector<:vector>> vv;

  for (std::string line;
       std::getline(std::cin, line);
       vv.push_back(std::vector(std::istream_iterator(std::move(std::istringstream(line))),
                                     std::istream_iterator()))
       );

  // Process the vector of vectors vv
}

في هذا المقتطف، يضمن المصطلح "stay" أن يظل مرجع القيمة المقدمة صالحًا بعد النقل. تعد هذه الخطوة ضرورية لتحقيق الكفاءة، لأنها تتجنب نسخ الأحرف غير الضرورية.

توفر هذه الحلول طرقًا فعالة ومتعددة الاستخدامات لاستخراج الأعداد الصحيحة من ملف نصي وتخزينها في ناقل، بغض النظر عما إذا كانت الخطوط تحتوي على خط ثابت أو ثابت عدد متفاوت من الأعداد الصحيحة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3