int numberofboys; cout << "请输入参与约瑟夫的小孩人数"; cin >> numberofboys; cout << endl; string* namearray; namearray = new string [numberofboys];//输入每个小孩的名字 int* array; array = new int[numberofboys]; for (int i = 1; i <= numberofboys; i++) { array[i - 1] = i; } for (int i = 1; i <= numberofboys; i++) { cout << "请输入第 " << i << " 个小孩的名字:"; getline(cin, namearray[i - 1]); // 读取一整行字符串 cout << endl; }为什么第一个名字无法输入
时间: 2024-03-06 19:50:46 浏览: 37
<iostreambuf>
这是因为在输入`numberofboys`后,程序会在缓冲区留下一个回车符。当你在第一个`getline`语句中读取输入时,它会读取该回车符,而不是第一个小孩的名字。
解决这个问题的一种方法是在读取`numberofboys`后添加一个额外的`getline`语句,以清除缓冲区中的回车符。例如,在读取`numberofboys`后,可以添加以下语句:
```cpp
cin.ignore();
```
这将清除缓冲区中的回车符。然后,第一个`getline`语句将读取正确的输入。
阅读全文