除非遇到换行符,否则c++不会写入控制台
c++ not writing to console unless a newline was encountered
我最近正在编写一个涉及套接字的简单c++程序。我已经有一段时间没有使用c++了,所以我做了一些简单的健全性检查,以确保我的类构造正确。当时我遇到了一个非常奇怪的错误。当我在输出到控制台的末尾没有n
或endl
时,它不会写入控制台。例如:
这不会输出到控制台
class Server{
public:
Server(){
std::cout << "STARTING SERVER";
}
};
这将:
class Server{
public:
Server(){
std::cout << "STARTING SERVER" << std::endl;
}
};
两者都是使用Server server;
创建的。这只是我电脑里的一个"幽灵"吗?或者以前有人遇到过这种情况吗?
这很正常。它存储在缓冲区中,直到缓冲区被刷新。您可以将std::flush
发送到流以刷新它。您可以使用std::endl
来写行尾并刷新缓冲区。这基本上是一种优化,以避免在流中写入大量小东西时进行大量I/O操作。
相关文章:
- C++:将控制台输出存储在宏中更好吗
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- C++控制台应用程序阻止退出
- 如何修复此iFile以将.txt输出到控制台
- 为什么控制台要求输入,即使代码中没有输入
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 控制台输出在 Qt5 中未正确显示
- C++出现控制台错误.我无法识别源代码的问题
- C++程序不会从 Windows 控制台运行
- 有人可以向我解释为什么控制台输出 0 吗?
- Visual Studio 2017 停止工作,并在打开后显示许多控制台窗口
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- Win32 API 控制台光标在 WriteConsole 后不移动
- 如何获取控制台窗口的宽度?
- 如何在 Win32 C++控制台应用程序中调用 UWP 类库
- 如何从Windows控制台调用.exe(C++)以在不同的目录(或任何目录)中创建文件夹?
- 来自Visual Studio中控制台项目的exe文件?
- 为什么即使使用 for 循环遍历我的向量,它也没有输出到控制台?(C++)
- 使用 std::string_view 的子字符串控制台输出