gpt4 book ai didi

c++ - 作为日志旋转器通过管道传输到我的程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:47 25 4
gpt4 key购买 nike

我正在尝试实现我自己的日志旋转器(每当文件大小达到 10 MB 时创建新的日志文件)。读取标准输入并将其写入文件的部分是这样的:

fstream file("log.txt", ios::out | ios::app);
while (std::cin >> lineInput) {
file << lineInput;
}

但问题是管道数据被破坏了。制表符和新行总是丢失。例如,如果我的程序名称是 LogRotator,那么命令:

ls | ./LogRotator

只需将所有文件名连接在一起,如下所示:

LogRotatormain.oMakefile

ls 的输出是:

LogRotator main.o Makefile

我的问题:如何让标准流式传输保留所有内容,包括制表符、换行符等?

最佳答案

多亏了 Dieter Lücking 的提示,我找到了实现它的方法。所以必须使用未格式化的读取。以下工作正常:

fstream file("log.txt", ios::out | ios::app);
while (getline(cin,lineInput,'\n'))
{
file << lineInput;
}

关于c++ - 作为日志旋转器通过管道传输到我的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31894218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com