在C++入门书中,在第(1)章中,它提到了以下内容:
endl是一个特殊的值,称为操纵器,当写入输出流时,具有向输出写入换行符并 释放与该设备关联的缓冲区的效果.通过浏览缓冲区,我们确保用户将立即看到写入流的输出.
在这里"冲洗缓冲区"是什么意思?
我试图用C++编写代码,就像tail -f在linux中一样.我发现了这个问题:
如何在C++中阅读不断增长的文本文件?并实现了相同的.我创建了一个temp.txt并开始做echo "temp" >> temp.txt.但是我的程序没有打印对文件所做的更新.我做错了什么?这是我正在使用的代码
#include <iostream>
#include <string>
#include <fstream>
#include <unistd.h>
int main()
{
std::ifstream ifs("temp.txt");
if (ifs.is_open())
{
std::string line;
while (true)
{
while (std::getline(ifs, line)) std::cout << line << "\n";
if (!ifs.eof()) break; // Ensure end of read was EOF.
ifs.clear();
sleep(3);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
我在linux机器上尝试了相同的代码并且它工作正常,但它不适用于Mac.我gcc用来编译代码.
gcc -v 给
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
Target: …Run Code Online (Sandbox Code Playgroud) 我被要求为我的推荐课程创建一个汽油泵程序,我遇到了运行它的问题,目前这是编译器在尝试编译代码完整构建对话时输出的主要内容
1> m:\ visual studio 2010\projects\referral\referral\main.cpp(56):错误C2678:二进制'>>':找不到哪个运算符带有'std :: istream'类型的左操作数(或者没有可接受的转换)
#include <iostream>
#include <istream>
#include <ostream>
#include <fstream>
#include <ctime>
#include <cmath>
#include <string>
#include <Windows.h>
using namespace std;
int reciept();
int pump;
int petrol;
int main()
{
bool exit = false;
int code;
string p1w ("Waiting");
string p2w ("Waiting");
string p3w ("Waiting");
string p4w ("Waiting");
string p1r ("Ready");
string p2r ("Ready");
string p3r ("Ready");
string p4r ("Ready");
if (GetAsyncKeyState(VK_ESCAPE))
{
exit = true;
}
cout << "***************************************************" << endl; …Run Code Online (Sandbox Code Playgroud)