欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:题目解析
🌎推荐文章:【LeetCode】winter vacation training
C++系统实现了一个庞大的类库,其中ios为基类,其他类都是直接或间接派生自ios类
C++标准库提供了4个全局流对象cin、cout、cerr、clog,使用cout进行标准输出,即数据从内
存流向控制台(显示器)。使用cin进行标准输入即数据通过键盘输入到程序中,同时C++标准库还
提供了cerr用来进行标准错误的输出,以及clog进行日志的输出,从上图可以看出,cout、
cerr、clog是ostream类的三个不同的对象,因此这三个对象现在基本没有区别,只是应用场景不
同。
🥗 Tips:
istream& operator>> (int& val);
explicit operator bool() const;
实际上我们看到使用while(cin>>i)去流中提取对象数据时,调用的是operator>>
,返回值是
istream类型的对象,那么这里可以做逻辑条件值,源自于istream的对象又调用了operator
bool,operator bool调用时如果接收流失败,或者有结束标志,则返回false。
C++提供了丰富的文件操作功能,通过文件IO流(File IO Stream)可以实现对文件的读取和写入操作。C++中常用的文件IO流包括输入流(ifstream)、输出流(ofstream)和输入输出流(fstream)。
下面是一些常见的文件IO操作示例:
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ifstream inputFile("example.txt"); // 打开文件
if (!inputFile) {
std::cerr << "Failed to open file." << std::endl;
return 1;
}
std::string line;
while (std::getline(inputFile, line)) { // 逐行读取文件内容
std::cout << line << std::endl; // 输出每一行的内容
}
inputFile.close(); // 关闭文件
return 0;
}
#include <iostream>
#include <fstream>
int main() {
std::ofstream outputFile("example.txt"); // 打开文件
if (!outputFile) {
std::cerr << "Failed to open file." << std::endl;
return 1;
}
outputFile << "Hello, World!" << std::endl; // 写入内容到文件
outputFile.close(); // 关闭文件
return 0;
}
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::fstream file("example.txt", std::ios::in | std::ios::out); // 打开文件
if (!file) {
std::cerr << "Failed to open file." << std::endl;
return 1;
}
std::string line;
while (std::getline(file, line)) { // 逐行读取文件内容
std::cout << line << std::endl; // 输出每一行的内容
}
file.seekp(0, std::ios::end); // 移动写入位置到文件末尾
file << "New line" << std::endl; // 写入新内容到文件末尾
file.close(); // 关闭文件
return 0;
}
C++ 的 stringstream 是一个类,它可以将字符串作为流进行处理。stringstream 提供了对字符串的输入和输出操作,让我们可以像对待标准输入输出流一样对字符串进行读写。
使用 stringstream 前需要包含头文件 <sstream>
。
下面是 stringstream 的一些常见用法:
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string str = "123";
int num;
std::stringstream ss(str); // 将字符串 str 绑定到 stringstream 对象 ss
ss >> num; // 将字符串转换为整数
std::cout << "Number: " << num << std::endl;
return 0;
}
在上述示例中,我们将字符串 “123” 绑定到 stringstream 对象 ss,并使用 >>
运算符将字符串转换为整数。
只有字符串才可以绑定在stringstream上,也只有字符串想转换为其它类型时,才绑定在stringstream上,然后由stringstream通过流提取符号
>>
,从stringstream流中提取刚刚绑定的字符串赋值给新的变量。
#include <iostream>
#include <sstream>
#include <string>
int main() {
int num = 123;
std::stringstream ss;
ss << num; // 将整数转换为字符串
std::string str = ss.str(); // 获取转换后的字符串
std::cout << "String: " << str << std::endl;
return 0;
}
在上述示例中,我们使用 <<
运算符将整数 num 转换为字符串,并通过 ss.str()
方法获取转换后的字符串。
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
int main() {
std::string str = "apple,banana,cherry";
std::vector<std::string> tokens;
std::stringstream ss(str); // 将字符串 str 绑定到 stringstream 对象 ss
std::string token;
char delimiter = ',';
while (std::getline(ss, token, delimiter)) { // 使用 getline() 函数分割字符串
tokens.push_back(token);
}
for (const auto& t : tokens) {
std::cout << t << std::endl;
}
return 0;
}
在上述示例中,我们使用 std::getline()
函数和 stringstream 对象 ss 分割字符串 str,并将分割后的子串存储到 vector 容器中。
stringstream 提供了一种方便的方式来处理字符串,可以进行类型转换、字符串拼接、字符串分割等操作。通过使用 stringstream,我们可以更灵活地处理字符串数据。
如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注🌹🌹🌹?? 🧡 💛,学海无涯苦作舟,愿与君一起共勉成长