此代码没有输出
No output for this code
我不知道
为什么这个程序没有打印任何东西,甚至没有打印第一个打印语句。可能是什么问题?
它使用 g++ filename.cpp
成功编译。
#include "deck.h"
#include "hand.h"
#include <vector>
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
cout << "not even this";
vector<Hand> hands;
Deck deck;
int players;
int seed;
int sizeOfHand = 5;
int i;
vector<Hand>::iterator itr;
cout << "Enter seed: ";
cin >> seed;
srand(unsigned(seed));
cout << "Enter number of players: ";
cin >> players;
for (i = 0; i < players; i++) {
hands.push_back(Hand());
}
deck.Shuffle();
for (i = 0; i < sizeOfHand; i++) {
vector<Card> cards = deck.Deal(players);
for (itr = hands.begin(); itr < hands.end(); itr++) {
cout << "1";
itr->add(*cards.begin());
cards.erase(cards.begin());
}
}
for (itr = hands.begin(), i=1; itr < hands.end(); itr++, i++) {
cout << "Player " + i;
itr->showHand();
}
}
出于性能原因,大多数操作系统缓冲您写入的输出cout
(或cerr
)。除非刷新输出(例如,如果还打印换行符,则会发生这种情况),否则只有在缓存已满并刷新到标准输出后,才会看到输出,从而在控制台窗口中可见。此缓冲区可以容纳相当多的字符;可能是您的程序输出的所有内容。此行为称为"行缓冲"。
有两种方法可以修复程序,具体取决于您实际想要的内容:
-
一种解决方案是每次希望输出可见时在代码中输出换行符:
换行符cout << "Enter a number: " << endl;
不会自动打印,因为之后可能想写一些没有换行符的东西,例如,当生成一行输出的逻辑被分成几行代码时,或者如果输出具有某种二进制性质。
-
要在不写入换行符的情况下刷新输出,您还有两个选项:
-
打印后呼叫
cout.flush()
cout << "Enter a number: "; cout.flush();
-
将
std::flush
流式传输到cout
中,可以与打印代码结合使用:cout << "Enter a number: " << flush;
-
就正在发生的事情而言,您的问题已经得到了回答,但换行符并不是唯一的解决方案。
如果您希望输入与输出在同一行,则可以刷新:
cout << "Enter seed: " << flush;
cin >> seed;
请注意,endl
实际上是在内部调用flush
。 这与仅仅写"n"
不同.
您需要为流启用连续缓冲。在main
顶部添加以下内容:
std::cout << std::unitbuf;
这会导致流在每个输出操作后刷新。
相关文章:
- 为什么我的代码在输出中增加了93天
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 在我的代码中,获得最大的Pair Wise产品C++和输出并不总是正确的
- 我无法获取以下代码的输出
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 编译并运行后,输出未出现在 Visual Studio 代码中
- VI工作室代码错误无法打开输出文件主.exe
- 代码编译没有任何输出,入门程序
- 与其他编译器相比,相同的代码在工作室Microsoft提供不同的输出
- 可能我知道为什么这段代码没有给出任何输出吗?
- 从排序数组中删除重复项,具有不同代码方式的相同解决方案具有不同的输出
- Clang 给了我符号更改的警告,但代码仍然产生正确的输出
- 为什么这两个版本的代码给出不同的输出
- 以下与指针相关的代码的输出是什么?
- C++和 Python 中的代码相同,但输出不同
- 为什么我的代码块上没有显示输出?
- C++ 高级代码未给出正确的输出
- (C++)分解这个简单的输入/输出代码:
- 错误的输出代码
- 奇怪的输出(代码块codebblocks -16.01mingw-setup.exe)