光明随心订网站怎么做,珠海建站网站,创业,seo网站免费优化软件在 C 中#xff0c;流#xff08;stream#xff09;是一种用于实现输入输出操作的抽象概念。流可以看作是字节的流动#xff0c;这些字节可以从一个地方流向另一个地方#xff0c;例如从键盘输入到程序中#xff0c;或者从程序输出到屏幕。C 提供了一套完整的流库来处理各…
在 C 中流stream是一种用于实现输入输出操作的抽象概念。流可以看作是字节的流动这些字节可以从一个地方流向另一个地方例如从键盘输入到程序中或者从程序输出到屏幕。C 提供了一套完整的流库来处理各种类型的输入和输出包括文件 I/O、字符串处理等。本文将详细介绍 C 中使用流进行输入和输出的方法并结合实际案例进行讲解。
一、输入输出流的基本概念
在 C 中流是通过流对象来操作的。流对象是 std 命名空间中的类模板实例化得到的对象主要包括 istream、ostream 和 iostream 三种类型。其中istream 用于输入操作ostream 用于输出操作而 iostream 是前两者的组合。
1.1 标准输入输出流对象
C 预定义了四个标准流对象分别是 cin、cout、cerr 和 clog。它们分别对应于标准输入、标准输出、标准错误和标准日志。
示例代码
#include iostreamint main() {// 使用 cout 输出一段文本std::cout Hello, World! std::endl;// 使用 cin 读取一个整数int x;std::cin x;std:cout You entered: x std::endl;return 0;
}二、格式化输入输出
C 提供了一些操纵符manipulator来控制输出格式例如设置填充字符、对齐方式、宽度等。
2.1 设置输出格式
示例代码
#include iostream
#include iomanipint main() {int num 12345;// 设置宽度为 10向右对齐不足位用 0 补齐std::cout std::setw(10) std::right std::setfill(0) num std::endl;// 设置宽度为 10向左对齐不足位用空格补齐std::cout std::setw(10) std::left num std::endl;// 设置输出为十六进制形式std::cout std::hex num std::endl;return 0;
}三、文件输入输出
C 的 fstream 库提供了用于文件操作的类包括 ifstream用于读取文件、ofstream用于写入文件和 fstream同时支持读写。
3.1 文件打开与关闭
示例代码
#include fstream
#include iostreamint main() {// 以读模式打开文件std::ifstream infile(example.txt);if (!infile) {std::cerr Error opening file for reading. std::endl;return 1;}// 以写模式创建或覆盖文件std::ofstream outfile(output.txt);if (!outfile) {std::cerr Error opening file for writing. std::endl;return 1;}// 关闭文件infile.close();outfile.close();return 0;
}案例读写CSV文件
CSV逗号分隔值文件是一种常见的数据存储格式。使用C流可以方便地读写CSV文件。
#includefstream
#includesstream
#includevector
#includestringstd::vectorstd::vectorstd::string readCSV(const std::string filename) {std::vectorstd::vectorstd::string data;std::ifstream infile(filename);std::string line;while (std::getline(infile, line)) {std::istringstream iss(line);std::vectorstd::string row;std::string value;while (std::getline(iss, value, ,)) {row.push_back(value);}data.push_back(row);}return data;
}void writeCSV(const std::string filename, const std::vectorstd::vectorstd::string data) {std::ofstream outfile(filename);for (const auto row : data) {for (size_t i 0; i row.size(); i) {outfile row[i];if (i row.size() - 1) {outfile ,;}}outfile std::endl;}
}int main() {std::vectorstd::vectorstd::string data readCSV(input.csv);writeCSV(output.csv, data);return 0;
}四、字符串流
C 的 sstream 库提供了用于字符串操作的类包括 istringstream用于从字符串读取数据、ostringstream用于向字符串写入数据和 stringstream同时支持读写。
4.1 字符串读写操作
示例代码
#include sstream
#include iostream
#include stringint main() {// 创建一个字符串流对象std::istringstream iss(Hello, World!);// 从字符串流中读取数据std::string word;while (iss word) {std::cout word std::endl;}// 向字符串流中写入数据std::ostringstream oss;oss Number: 42;std::string result oss.str();std::cout result std::endl;return 0;
}五、总结
通过本文的介绍我们了解了 C 中使用流进行输入和输出的基本概念和方法。流是 C 中处理输入输出的重要工具它提供了一种灵活且高效的方式来处理不同类型的数据。在实际编程中我们需要根据具体需求选择合适的流对象和操作方法以便更好地完成输入输出任务。希望本文能够帮助大家更好地理解和掌握 C 中的流操作。