当前位置:   article > 正文

C++中的常见I/O方式

C++中的常见I/O方式

目录

摘要

1. 标准输入输出(Standard I/O)

2. 文件输入输出(File I/O)

3. 字符串流(String Stream)

4. 低级文件I/O(Low-level File I/O)

5. 内存映射文件(Memory-Mapped File I/O)

6. 网络I/O(Network I/O)

服务器端

客户端


摘要

C++中的输入输出操作(I/O)方式多种多样,从简单的标准I/O到复杂的内存映射文件和网络I/O。每一种的用法都有其特别之处,下面会分别用代码的方式来简单介绍一些用法,可以根据自己项目所需来选择合适的I/O方式可以提高我们项目开发的效率。

1. 标准输入输出(Standard I/O)

标准输入输出用于与控制台进行交互。

  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <sstream>
  5. using namespace std;
  6. struct Student {
  7. string name;
  8. int age;
  9. vector<int> grades;
  10. void display() const {
  11. cout << "Name: " << name << ", Age: " << age << ", Grades: ";
  12. for (int grade : grades) {
  13. cout << grade << " ";
  14. }
  15. cout << endl;
  16. }
  17. };
  18. int main() {
  19. vector<Student> students;
  20. string input;
  21. cout << "Enter student information (name age grades), type 'end' to stop:" << endl;
  22. while (true) {
  23. getline(cin, input);
  24. if (input == "end") break;
  25. istringstream iss(input);
  26. Student student;
  27. iss >> student.name >> student.age;
  28. int grade;
  29. while (iss >> grade) {
  30. student.grades.push_back(grade);
  31. }
  32. students.push_back(student);
  33. }
  34. cout << "Entered students:" << endl;
  35. for (const Student& student : students) {
  36. student.display();
  37. }
  38. return 0;
  39. }

2. 文件输入输出(File I/O)

文件I/O操作允许将数据存储到文件中或从文件中读取。

  1. #include <fstream>
  2. #include <iostream>
  3. #include <vector>
  4. #include <string>
  5. using namespace std;
  6. struct Employee {
  7. string name;
  8. int id;
  9. double salary;
  10. void display() const {
  11. cout << "Name: " << name << ", ID: " << id << ", Salary: " << salary << endl;
  12. }
  13. };
  14. int main() {
  15. vector<Employee> employees = {
  16. {"Aoteman", 1, 50000},
  17. {"AotemanDaddy", 2, 60000},
  18. {"AotemanMami", 3, 70000}
  19. };
  20. ofstream outFile("employees.dat", ios::binary);
  21. if (!outFile) {
  22. cerr << "Error opening file for writing" << endl;
  23. return 1;
  24. }
  25. for (const Employee& emp : employees) {
  26. outFile.write((char*)&emp, sizeof(Employee));
  27. }
  28. outFile.close(
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/690170
推荐阅读
相关标签
  

闽ICP备14008679号