Cout 2D Array для консоли C ++ - PullRequest
0 голосов
/ 09 апреля 2020

У меня проблемы с получением двумерного массива для корректного отображения на консоли. В настоящее время он отображается так:

Ally Baba's Burgers
-------------------
B Burger 3
S 
Soda 1
F Fries 
2
C Chips 1.5 

-------------------
X - Clear Sale
T - Total
E - End Shift

Enter command:

Я бы хотел, чтобы он отображался как

Ally Baba's Burgers
-------------------
B Burger 3
S Soda 1
F Fries 2
C Chips 1.5 
-------------------
X - Clear Sale
T - Total
E - End Shift

Enter command: 

Текстовый файл, из которого я получаю пункты меню, выглядит точно так же, как указано выше, минус кут, который я вставляю.

void getMenu(string menu[][3]){

    string line;
    ifstream file("Menu.txt");

    if (!file){
        cout << "File failed to opened\n";
    }
    for (int i = 0; i < 4; ++i){
        for (int j = 0; j <3; ++j){
            if (getline(file, line, ' ')){
                menu[i][j] = line;
            }
        }
     }
 file.close();
}

void displayMenu(string menu[][3], char & choice){
    cin.clear();
    cout << "Ally Baba's Burgers\n";
    cout << "-------------------" << endl;

    for (int i = 0; i < 4; ++i){
        for (int j = 0; j < 3; ++j){
            cout << menu[i][j] << ' ';
        }
        cout << endl;
    }
    cout << "-------------------" << endl;
    cout << "X - Clear Sale" << endl;
    cout << "T - Total" << endl;
    cout << "E - End Shift\n" << endl;
    cout << "Enter command: ";
    cin >> choice;
}

Ваша помощь приветствуется.

1 Ответ

1 голос
/ 09 апреля 2020

Как указала @BessieTheCow, getline читает, пока не будет найден следующий пробел. Используйте без этого или укажите вместо этого новый разделитель строк.

Предположим, что ваш файл Menu.txt заканчивает каждую строку, а новый разделитель строк, выполните:

void getMenu(string menu[][3]){

    string line;
    ifstream file("Menu.txt");

    if (!file){
        cout << "File failed to opened\n";
    }
    for (int i = 0; i < 4; ++i){
        for (int j = 0; j <3; ++j){
            if (getline(file, line)){
                menu[i][j] = line;
            }
        }
     }
 file.close();
}
...