我正在尝试通过执行以下操作将' '
作为识别字符的空间直接存储到字符数组中:
char ** board = new char *[row];
for (int r = 0; r < row; r++) {
board[r] = new char[col];
}
for (int r = 0; r < row; r++) {
cout << "Enter input: " << endl;
cin >> board[r];
}
但是,如果我进入' '
到控制台它执行Enter input
两次(如果row
是3
3`),然后终止。我将如何直接将输入内容(包括空格字符)存储到板上?
尝试更多类似这样的方法:
#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');
}
但是,正如之前在注释中建议的那样,您确实应该使用std::string
和std::getline()
代替。如果可以的话,将数组更改为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]);
}
如果您不能使用std::vector
,则至少可以使用std::string
来读取用户的输入,然后将其数据复制到您的char[][]
数组中:
#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';
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句