c++中的输入输出流
cerr和clog区别#
在 C++ 中,std::cerr 和 std::clog 都是标准错误输出流,它们的特点是将输出直接发送到标准错误设备。这通常意味着它们的输出会显示在终端(或者命令行窗口)上,而不是像标准输出流 std::cout 那样可以被重定向到文件或其他输出设备。
具体来说:
std::cerr是标准错误流,用于输出程序中的错误信息和其他一些重要信息,例如运行时错误、异常信息等。它的输出通常会直接显示在终端上,即使输出被重定向到文件,也可能会保持直接在终端上显示。
std::clog也是标准错误流,与std::cerr 类似,用于输出程序的运行时信息、警告等。与 std::cerr 的主要区别在于,std::clog 的输出可以被重定向到文件或其他输出设备,因为它的输出是标准错误流,但并没有像 std::cerr 那样特别处理。总结来说,std::cerr 和 std::clog 的输出通常会显示在终端上,但 std::clog 的输出可以通过重定向被发送到其他地方,而 std::cerr 的输出通常会始终显示在终端上,不易被重定向。
代码:
#include <iostream>
int main(){
std::clog<<"clog"<<std::endl;
std::cout<<"cout"<<std::endl;
std::cerr<<"cerr"<<std::endl;
}
终端显示:
clog
cout
cerr
终端输入:
./day1.exe > day1.log
终端显示:
clog
cerr
day1.log显示:
cout
<<和>>#
<<运算符 接受两个运算对象:左侧的运算对象必须是一个ostream对象,右侧的运算对象是要打印的值。此运算符将给定的值写到给定的ostream对象中。输出运算符的计算结果就是其左侧运算对象。即,计算结果就是我们写入给定值的那个ostream对象。
(std::cout <<"Enter two numbers:")<<std::endl;
输出语句使用了两次<<运算符。因为此运算符返回其左侧的运算对象,因此第一个运算符的结果成为了第二个运算符的左侧运算对象。这样,我们就可以将输出请求连接起来。
输入运算符(>>) 与输出运算符类似,它接受一个istream作为其左侧运算对象,接受一个对象作为其右侧运算对象。它从给定的istream读入数据,并存入给定对象中。与输出运算符类似,输入运算符返回其左侧运算对象作为其计算结果。
(std::cin >>v1)>> v2;
由于此运算符返回其左侧运算对象,因此我们可以将一系列输入请求合并到单一语句中。本例中的输入操作从std::cin读入两个值,并将第一个值存入v1,将第二个值存入v2。返回 std::cin 对象的引用。
在命令行中,>> 符号表示将程序的标准输出(stdout)追加到指定的文件中。与单个 > 符号不同,>> 将输出追加到文件末尾而不是覆盖文件。
注释嵌入输出#
int main(){
std::cout<</*"*/"/*"/*"*/;
}
输出结果为:
/*
读取数量不定的输入数据#
当我们使用一个istream对象作为条件时,其效果是检测流的状态如果流是有效的,即流未遇到错误,那么检测成功。当遇到文件结束符(end-of-file/EOF),或遇到一个无效输入时(例如读入的值不是一个整数),istream对象的状态会变为无效。处于无效状态的istream对象会使条件变为假。
os | 文件结束符号 |
---|---|
win | Ctrl+Z |
unix | Ctrl+D |
文件重定向#
例如test.exe,输入文件为in,输出文件为out,则命令为:
./test.exe <in >out
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!