宿題のお手伝いです。私は単純なカード ディール プログラムを与えられ、スーツごとに描かれたランクを記録できるリスト クラスを作成するタスクを与えられました。私が今抱えている問題は、私のアウトプットです。スーツごとに繰り返されるループにランクを配置しました。停止カードがヒットした後、ループが停止し、各スーツからどのカードが引き出されたかを出力する必要があります。
私の出力関数は次のようになります。
void list::Output(){
while(curr!=NULL){
cout << curr->data;
curr = curr->next;
}
}
これは、文字列をリストの 1 つに入れるループの 1 つです。
list Deck[4];
if (suit2 == suit[0]){ //suit2 is the suit of the current card
for (int i=0;i<13;i++){ //suit is a const string array provided by the teacher
if (rank2 == rank[i]) //rank2 is the current rank, rank is the const string
Deck[0].Input(i);
}
}
出力関数を呼び出すと、正常に動作するようです。つまり、endl を追加しようとするまでです。それの後に、または任意の種類の std 出力を追加します。私がそれをやろうとすると、出力はすべて間隔をあけて奇妙にフォーマットされます。
たとえば、単純に書くと
Deck[0].Output();
次のように、正常にコンパイルされ、正常に出力されます。
King Jack 8 Jack 6 Ace%
しかし、その後に endl を追加すると:
Deck[0].Output();
cout << endl;
正常にコンパイルされますが、次のように出力されます。
King
Jack
8
Jack
6
Ace
何が原因でしょうか? とてもイライラします。