gpt4 book ai didi

c++ - 给定一个字符串,如何创建一个二维字符数组?

转载 作者:行者123 更新时间:2023-11-30 02:17:45 26 4
gpt4 key购买 nike

给定这个字符串(或任何字符串):“# ####\n# #\n# ## #\n# #\n### ##\n”,我如何才能为我的数据结构和算法类寻找最短路径迷宫求解器。给定这个字符串(或任何字符串),我如何从中创建一个二维数组?这样,我就可以遍历二维数组,如果它是空白,我可以创建一个新顶点。

比如这个

"#####\n# #\n# ## #\n# #\n### ##\n"

应该像这样存储在二维数组中:

 # ####

# #

# ## #

# #

### ##

我尝试实现这个,但它没有打印出正确的东西。

char ** grid;
for(int i = 0; i < maze.size(); i++){
grid[i] = new char[numCols];
for(int j = 0; j != '\n'; j++){
cin >> grid[i][j];
}
}

最佳答案

不确定您处理的行数是固定的。下面的示例是保守的,它假设您事先不知道行数并且每行可以有不同的长度,因此它使用 vectorstring.

如果你事先知道大小,你可以用数组替换它。评论应该使行为清晰。

#include <iostream>
#include <sstream>
#include <vector>
#include <string>
using namespace std;

int main()
{
const char *s = "# ####\n# #\n# ## #\n# #\n### ##\n";

istringstream is(s); // associate the input string with an input stream

vector<string> result; // use string for each line because a vector of characters is a string

string line;
while(getline(is, line)) // use stream library to read until next \n character
result.push_back(line); // add line

// demonstrate results
for (size_t i = 0; i < result.size(); ++i) {
for (size_t j = 0; j < result[i].length(); ++j)
cout << result[i][j];
cout << "\n";
}

return 0;
}

关于c++ - 给定一个字符串,如何创建一个二维字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53240967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com