Итак, согласно Eclipse, функция getline сохраняет всю текстовую строку из потока вместе с символом новой строки и «завершающим нулевым символом». Я не совсем знаю, что это значит.
Вывод, который я пытаюсь получить, - это печать двух параллельных массивов с использованием функции. Эта функция является функцией void, содержащей 3 параметра, первый массив, второй массив и значение размера массива с постоянным целым числом.
Я могу без проблем сохранить входные данные в первом массиве.
const int SIZE = 5;
double firstArray[SIZE];
// range-based `for` loop to get user input
for (double& floatNum : firstArray)
{
cout << "Enter a floating point number: ";
cin >> floatNum;
}
Однако со вторым массивом, который является строковым типом, все становится странным.
string secondArray[SIZE];
// `for` loop to get user input
for (int i = 0; i < SIZE; i++)
{
cout << "Enter a name: ";
cin.ignore();
getline(cin, secondArray[i]);
}
Мой желаемый вывод - распечатать оба массива с помощью вызова функции в main()
, printParallel(array1, array2, sizeofarray)
, одновременно используя while
l oop внутри функции, которую я попытался здесь:
void printParallel(double arrayOne[], string arrayTwo[], const int NUM)
{
int i = 0;
while (i < NUM)
{
cout << arrayOne[i] << " " << arrayTwo[i] << endl;
i++;
}
}
Но вывод слегка отключен:
Enter a floating point number: 1.23
Enter a floating point number: 1.23
Enter a floating point number: 1.23
Enter a floating point number: 1.23
Enter a floating point number: 1.23
Enter a name: AA AA
Enter a name: AA AA
Enter a name: AA AA
Enter a name: AA AA
Enter a name: AA AA
1.23 AA AA
1.23 A AA
1.23 A AA
1.23 A AA
1.23 A AA
Может кто-нибудь объяснит, что здесь происходит? Первая буква «А» перезаписывается нулевым символом. Кроме того, есть ли лучший способ, которым я должен задавать вопросы, чтобы лучше решать проблемы в будущем?