📅  最后修改于: 2023-12-03 14:39:57.068000             🧑  作者: Mango
在C++中,我们通常使用cin
和cout
进行标准输入输出(I/O)。不过,有时候我们需要从文件或字符串中读取数据或将输出写入文件中。这时,我们就需要使用I/O重定向技术来实现。
I/O重定向是指将标准输入(stdin)或标准输出(stdout)从默认位置(通常是控制台)重定向到另一个文件或字符串。
I/O重定向的用途非常广泛,主要包括以下几个方面:
C++中的I/O重定向可以通过以下几种方式来实现:
C++的I/O重定向符号分别为“<”和“>”,分别表示输入重定向和输出重定向。例如:
// 将标准输入重定向为文件input.txt
freopen("input.txt", "r", stdin);
// 将标准输出重定向为文件output.txt
freopen("output.txt", "w", stdout);
我们可以使用istringstream
和ostringstream
来代替标准输入输出流,从而实现字符串的输入输出。例如:
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
// 将字符串转换为整数
string str = "123";
istringstream iss(str);
int num;
iss >> num;
cout << num << endl;
// 将整数转换为字符串
ostringstream oss;
int val = 456;
oss << val;
string res = oss.str();
cout << res << endl;
return 0;
}
除了使用字面值字符串外,我们还可以使用重载运算符来代替标准输入输出流。例如:
#include <iostream>
#include <string>
using namespace std;
class IO {
public:
IO& operator>>(int& x) {
string str;
cin >> str;
x = stoi(str);
return *this;
}
IO& operator<<(int x) {
cout << x;
return *this;
}
};
int main()
{
int num;
IO io;
io >> num;
io << num << endl;
return 0;
}
I/O重定向是一种非常实用的技术,可以实现很多有用的功能。在C++中,我们可以通过输入输出重定向符号、字面值字符串和重载运算符等方式来实现I/O重定向。