如何在C++中从一行用户输入中解析并存储多个用空格分隔的字符串到一个二维字符数组中?
时间: 2024-12-12 08:27:07 浏览: 13
在C++中,可以从用户输入的一行文本中解析并存储多个用空格分隔的字符串到一个二维字符数组中,通常会涉及到动态内存分配和字符串处理。这里给出一个简单的示例:
```cpp
#include <iostream>
#include <string>
using namespace std;
#define ROWS 3 // 定义二维数组的行数
#define COLS 5 // 定义二维数组的列数
void storeInputInStringArray(string line) {
char** arr = new char*[ROWS]; // 创建指向char数组的指针数组
for (int i = 0; i < ROWS; i++) {
arr[i] = new char[COLS]; // 动态分配每一行的字符数组
}
size_t pos = 0;
string word;
for (int i = 0; i < ROWS && pos < line.length(); ++i) {
if ((pos = line.find(' ', pos)) != string::npos) { // 找到空格的位置
arr[i][icol++] = '\0'; // 前一个单词结束,添加'\0'
word = line.substr(pos + 1); // 保存下一个单词
pos += 1; // 更新位置以查找下一个空格
} else {
icol = COLS - 1; // 如果没有找到空格,填充剩余的空间
}
arr[i][icol] = '\0'; // 结束当前单词
}
cout << "User input stored in the array:\n";
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
// 释放动态分配的内存
for (int i = 0; i < ROWS; i++) {
delete[] arr[i];
}
delete[] arr;
}
int main() {
string line = "Hello World C++ Programming"; // 用户输入示例
storeInputInStringArray(line);
return 0;
}
```
这个程序首先创建一个二维字符数组,然后通过`find(' ')`和`substr()`方法逐个分割输入的字符串,并存储到数组中。注意最后要记得释放动态分配的内存。
阅读全文