Versuchen Sie, etwas mehr wie das hilft:
#include <iostream>
#include <iomanip>
#include <limits>
char ** board = new char *[row];
for (int r = 0; r < row; r++) {
board[r] = new char[col];
}
for (int r = 0; r < row; r++) {
std::cout << "Enter input: " << std::endl;
std::cin >> std::noskipws >> std::setw(col) >> board[r];
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
jedoch, wie bereits in den Kommentaren vorgeschlagen, sollten Sie wirklich std::string
und std::getline()
stattdessen verwendet werden. Und wenn Sie können, ändern Sie Ihre Array std::vector<std::string>
:
#include <iostream>
#include <vector>
#include <string>
std::vector<std::string> board(row);
for (int r = 0; r < row; r++) {
std::cout << "Enter input: " << std::endl;
std:getline(std::cin, board[r]);
}
Wenn Sie nicht std::vector
verwenden können, können Sie zumindest std::string
verwenden zum Lesen der Eingabe des Benutzers und kopieren Sie dann seine Daten in Ihren char[][]
Array:
#include <iostream>
#include <string>
#include <cstring>
char ** board = new char *[row];
for (int r = 0; r < row; r++) {
board[r] = new char[col];
}
for (int r = 0; r < row; r++) {
std::cout << "Enter input: " << std::endl;
std::string input;
std::getline(std::cin, input);
std::strncpy(board[r], input.c_str(), col-1);
board[r][col-1] = '\0';
}
Wenn Sie die ganze * Zeile * wollen, dann verwenden Sie ['std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string) und [' std :: getline'] (http: //en.cppreference.com/w/cpp/string/basic_string/getline) statt. –
Dies ist kein [mcve]. Was ist die Art von "Board"? – Xirema
wieder geöffnet, wie ich denke, Sie brauchen 'get()' nicht 'getline()', aber die Frage braucht mehr Details. – NathanOliver