c++如何像c语言一样以一维字符串的形式输入到二维数组
时间: 2024-09-14 10:07:33 浏览: 44
C语言数组:C语言数组定义、二维数组、动态数组、字符串数组_C语言中文网1
在C++中,将一维字符串转换为二维字符数组(如`char arr[row][col]`),你需要先获取用户输入的一行字符串,然后逐个插入到二维数组的对应单元格。这里是一个简单的示例:
```cpp
#include <iostream>
#include <string>
// 定义二维字符数组的大小
const int ROW = 5;
const int COL = 3;
int main() {
// 创建一个二维字符数组
char arr[ROW][COL];
// 获取用户输入的行数
std::cout << "请输入行数: ";
int rows;
std::cin >> rows;
// 验证输入的行数是否有效
if (rows > ROW) {
std::cerr << "行数过大,超出数组范围!" << std::endl;
return 0;
}
// 从用户那里获取每行的数据,并逐个存储到数组中
for (int i = 0; i < rows; ++i) {
std::cout << "请输入第 " << i+1 << " 行(空格分隔元素): ";
std::string input;
std::getline(std::cin, input);
// 将字符串分割成单个字符并复制到二维数组
size_t j = 0;
for (const auto& ch : input) {
arr[i][j++] = ch;
// 为了防止越界,处理最后一个元素时需要特殊处理
if (j == COL && !input.empty()) {
arr[i][j++] = '\0'; // 添加终止符'\0'
}
}
// 如果输入不满一行,添加剩余位置的'\0'
while (j < COL) {
arr[i][j++] = '\0';
}
}
// 打印数组内容
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < COL; ++j) {
std::cout << arr[i][j];
}
std::cout << "\n";
}
return 0;
}
```
在这个例子中,用户会按照提示逐行输入字符,每一行的内容会被填充到对应的二维数组中。记得要在适当的地方处理边界情况,例如行数过多或输入的不是完整行。
阅读全文