欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > C++复习补充 IO

C++复习补充 IO

2025/5/1 4:40:59 来源:https://blog.csdn.net/Yusei_0523/article/details/147617778  浏览:    关键词:C++复习补充 IO

cin和cout

C++对cin和cout的使用类似于C语言scanf和printf的使用

if(cin.fail())
{cin.clear();//恢复置位//cin如何将缓冲区的多个字符读出来,因为类似scanf当cin>>i,i为整形时,缓冲区读到字符时。停止读入,字符仍然留在缓冲区里char ch=cin.peek();//读取缓冲区的一个字符但不取出while(!(ch>='0'&&ch<='9')){ch=cin.get();//取出cout<<ch;ch=cin.peek();//读取}cout<<endl;
}

一般情况下我们读到标志位置位的情况不会遇到fail()置位,往往是标准输入输出关闭会导致这样的情况

cout的刷新策略是行缓冲的,但在vs2022不论是pause,还是sleep,在这之前都会刷新。不知道是不是平台的原因

int main() {// 默认行缓冲:不刷新std::cout << "Start...";std::this_thread::sleep_for(std::chrono::seconds(20));  // 输出可能不会立即显示// 显式刷新std::cout << "\nContinue..." << std::flush;std::this_thread::sleep_for(std::chrono::seconds(2));  // 输出立即显示// 调用系统命令触发隐式刷新std::cout << "\nPress Enter to exit";system("pause");  // 隐式刷新,输出显示后再等待输入return 0;
}

cin和cout是关联的

cin和cout是关联的,也就是说一旦使用其中一个另一个就会立即刷新,我们可以通过cin.tie()返回绑定的流,或者cin.tie(nullptr)关闭关联,或者cin.tie(流)关联其他流。

文件IO

文件io继承了C语言的格式甚至说系统调用的格式,
ifstream(“1.txt”)默认以in的方式打开来读
ofstream(“1.txt”)默认以out的方式打开来读,会截断

除此之外还可以有各种组合包括ate,app,binary等

ate打开时定位,修改文件指针时写就不在重新定位到文件结尾
app写入时定位,修改文件指针不影响文件结尾

app阻止截断
ate不会影响是否截断

out|ate文件仍然会截断,要想不截断就得out|in|ate,但此时未见必须存在

继承

对iostream重载流提取符,fstream,stringstream都可以使用,因为它们是基类与子类的关系

stringstream

stringstream既可以读也可以写,不过读完写要clear一下否则读写会出错

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词