「なにかの勘違い」じゃないかしら?
\u0026gt; 正しい出力のあとに_を繰り返してしまいます。
というのが何を意味しているかによりますけれど。
'_'ではなく全角の'_'を入力してループが終わらない、とかいう話ではないですよね?
このプログラムで、終了記号として'_'を入力したときその'_'はstdoutには出力されないし、繰り返しもしていない様子ですが。
$ cat test.cpp
#include \u0026lt;iOStream\u0026gt;
using namespace std;
int main() {
string card;
cin \u0026gt;\u0026gt; card;
while (card != \u0026quot;_\u0026quot;) {
int n;
cin \u0026gt;\u0026gt; n;
for (int i = 0; i \u0026lt; n; i++) {
int x;
cin \u0026gt;\u0026gt; x;
x = x % card.size();
card = card.substr(x) + card.substr(0, x);
}
cout \u0026lt;\u0026lt; card \u0026lt;\u0026lt; endl;
cin \u0026gt;\u0026gt; card;
}
}
$ g++ test.cpp
$ ./a.out \u0026gt;out.txt
aabc
3
1
2
1
vwxyz
2
3
4
_
$ cat out.txt
aabc
xyzvw