C++文件IO流及stringstream流读写文件和字符串操作详解
一、C++文件IO流
1. 什么是文件IO流?
C++中提供了文件IO流,它是对磁盘文件进行输入输出的流,它提供了读写磁盘文件的功能。
2. C++文件IO流分类
C++的文件IO流分为两类:
- 输入流:用于从文件中读取数据,常用的有
ifstream
。 - 输出流:用于向文件中写入数据,常用的有
ofstream
。
3. 在 C++ 中打开文件
在C++中,我们可以使用open()
函数来打开一个文件,语法如下:
void open(const char* filename, ios::openmode mode);
filename
: 文件名称,可以是相对路径,也可以是绝对路径。mode
:文件打开的模式,可以是ios::in
、ios::out
和ios::app
等参数组合而成。
下面是一个示例代码:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
// 打开文件
ofstream outFile("myFile.txt");
// 写入数据
outFile << "hello, world!" << endl;
// 关闭文件
outFile.close();
return 0;
}
在上面的例子中,我们创建了一个名为“myFile.txt”的文件,并向其中写入了一行数据。注意,我们在使用完文件之后需要将其关闭。
4. 读写文件
C++提供了多种读写文件的方式,包括:
- 使用
>>
和<<
运算符。 - 使用
getline()
函数。 - 使用
get()
函数和put()
函数。
下面是一个getline()
函数的示例代码:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
// 打开文件
ifstream inFile("myFile.txt");
// 读取数据
string str;
getline(inFile, str);
// 输出数据
cout << str << endl;
// 关闭文件
inFile.close();
return 0;
}
在上面的代码中,我们打开了“myFile.txt”文件,并读取其中的一行数据。然后将其输出到屏幕上。
二、stringstream流
1. 什么是stringstream流?
stringstream
是C++标准库中的一个类,它能够用于字符串流的输入输出。
2. stringstream流的使用
我们可以通过<<
操作符向stringstream
中输入数据,也可以通过>>
操作符从中输出数据。下面是一个示例代码:
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
// 创建stringstream流
stringstream stream;
// 向stringstream中写入数据
stream << "hello, world!" << endl;
// 从stringstream中读取数据
string str;
stream >> str;
// 输出数据
cout << str << endl;
return 0;
}
在上面的代码中,我们创建了一个stringstream
流,并向其中输入了一行数据。然后从中读取一个字符串并输出。
3. 使用stringstream流进行字符串操作
stringstream
流除了可以进行输入输出操作外,还能够方便地进行字符串的一些操作,比如字符串的拼接、分割等。
下面是一个使用stringstream
进行字符串拼接的示例代码:
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
// 创建stringstream流
stringstream stream;
// 拼接字符串
stream << "hello";
stream << ", ";
stream << "world!";
string str = stream.str();
// 输出数据
cout << str << endl;
return 0;
}
在上面的代码中,我们使用stringstream
流拼接了两个字符串并将其输出。
下面是一个使用stringstream
进行字符串分割的示例代码:
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
int main()
{
// 创建stringstream流
stringstream stream("hello,world");
// 分割字符串
vector<string> words;
string word;
while (getline(stream, word, ','))
{
words.push_back(word);
}
// 输出数据
for (auto it = words.begin(); it != words.end(); ++it)
{
cout << *it << endl;
}
return 0;
}
在上面的代码中,我们使用stringstream
流将一个字符串按照,
分割成多个子字符串,并将子字符串保存到一个vector
容器中,最后将每个子字符串输出。
三、总结
本篇文章详细介绍了C++中的文件IO流和stringstream
流的使用以及字符串操作。在实际开发中,我们经常需要读写文件以及进行字符串的拼接、分割等操作,通过这篇文章的学习,相信大家对C++的文件IO流和stringstream
流有了更深入的了解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++文件IO流及stringstream流读写文件和字符串操作详解 - Python技术站