ورودی و خروجی
ورودی و خروجی در سیپلاسپلاس به مجموعهای از قابلیتها اطلاق میشود که امکان تعامل برنامه با کاربر، فایلها و سیستمهای خارجی را فراهم میکند. ورودی به برنامه اجازه میدهد دادهها را از منابع مختلف مانند صفحهکلید یا فایلها دریافت کند و خروجی امکان نمایش یا ذخیره نتایج در صفحهنمایش یا فایلها را فراهم میکند. استفاده صحیح از ورودی و خروجی برای توسعه نرمافزارهای قابل اعتماد و بهینه ضروری است و مانع از بروز خطاهایی مانند نشت حافظه، خواندن دادههای نامعتبر و خطاهای نوشتاری میشود. در سیپلاسپلاس، از کتابخانه استاندارد
مثال پایه
text\#include <iostream>
\#include <string>
\#include <limits>
int main() {
std::string name;
int age;
std::cout << "نام خود را وارد کنید: ";
std::getline(std::cin, name);
std::cout << "سن خود را وارد کنید: ";
while (!(std::cin >> age)) {
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "ورودی نامعتبر است. دوباره تلاش کنید: ";
}
std::cout << "سلام، " << name << "! شما " << age << " سال دارید." << std::endl;
return 0;
}
در این مثال پایه، ابتدا کتابخانههای
مثال کاربردی
text\#include <iostream>
\#include <fstream>
\#include <vector>
\#include <algorithm>
\#include <string>
class Student {
public:
std::string name;
int grade;
Student(const std::string& n, int g) : name(n), grade(g) {}
void display() const {
std::cout << name << ": " << grade << std::endl;
}
};
int main() {
std::ifstream inputFile("students.txt");
std::ofstream outputFile("students_sorted.txt");
if (!inputFile) {
std::cerr << "خطا در باز کردن فایل ورودی." << std::endl;
return 1;
}
std::vector<Student> students;
std::string name;
int grade;
while (inputFile >> name >> grade) {
students.emplace_back(name, grade);
}
std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
return a.grade > b.grade;
});
for (const auto& student : students) {
student.display();
outputFile << student.name << " " << student.grade << std::endl;
}
inputFile.close();
outputFile.close();
return 0;
}
این مثال پیشرفته ترکیب ورودی و خروجی با شیءگرایی، استفاده از STL و الگوریتمها را نشان میدهد. کلاس Student دادههای هر دانشآموز را کپسوله میکند. از std::ifstream و std::ofstream برای خواندن و نوشتن فایلها استفاده شده است. با std::vector دانشآموزان بهصورت پویا ذخیره میشوند و با std::sort و تابع lambda براساس نمره مرتب میشوند. متد display اطلاعات را در کنسول نمایش میدهد و نوشتن در فایل باعث حفظ دادهها میشود. استفاده از RAII باعث بسته شدن خودکار جریانها و جلوگیری از نشت منابع میشود. این الگو در پروژههای واقعی برای مدیریت دادهها، مرتبسازی و نمایش اطلاعات به کار میرود و از نظر کارایی، امنیت و نگهداری بهینه است.
بهترین شیوهها در ورودی و خروجی سیپلاسپلاس شامل اعتبارسنجی ورودیها، استفاده ایمن از جریانها، پاکسازی وضعیت جریان بعد از خطا و بهرهگیری از containerهای STL برای مدیریت دادهها است. اشتباهات رایج شامل بازنکردن یا نادیده گرفتن فایلها، عدم رسیدگی به خطاهای جریان و استفاده از الگوریتمهای ناکارآمد است. برای اشکالزدایی میتوان وضعیت جریانها را بررسی و پیامهای خطا با std::cerr نمایش داد. برای بهینهسازی عملکرد، پردازش دادهها بهصورت بلوکی و استفاده از الگوریتمهای بهینه STL توصیه میشود. از نظر امنیتی، ورودیهای خارجی باید همیشه اعتبارسنجی شوند و فرضیات غلط درباره فرمت دادهها اجتناب گردد تا برنامه مقاوم در برابر خطاها و آسیبپذیریها باشد.
📊 جدول مرجع
| سیپلاسپلاس Element/Concept | Description | Usage Example |
|---|---|---|
| std::cin | جریان ورودی استاندارد | int x; std::cin >> x; |
| std::cout | جریان خروجی استاندارد | std::cout << "سلام" << std::endl; |
| std::getline | خواندن کل خط ورودی | std::string s; std::getline(std::cin, s); |
| std::ifstream | خواندن فایل | std::ifstream in("file.txt"); |
| std::ofstream | نوشتن فایل | std::ofstream out("file.txt"); |
| std::vector | ذخیرهسازی پویا | std::vector<int> v; v.push_back(10); |
یادگیری ورودی و خروجی در سیپلاسپلاس امکان توسعه برنامههایی امن و کارآمد را فراهم میکند که با کاربران و سیستمهای خارجی تعامل دارند. تسلط بر این مفاهیم، یکپارچگی با الگوریتمها، ساختارهای داده و شیءگرایی را تقویت میکند و برنامهنویس را برای ایجاد نرمافزارهای مقیاسپذیر و مقاوم آماده میکند. مباحث بعدی پیشنهادی شامل مدیریت پیشرفته فایلها، استفاده از stringstream، سریالسازی دادهها و ورودی و خروجی در محیطهای چندنخی یا شبکه است. تمرین با پروژههای واقعی و مراجعه به مستندات رسمی سیپلاسپلاس دانش عملی را تقویت میکند.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود