如何在 c++ 中将 2D 数组转换为单个字符串
How to convert a 2D array into a single string in c++
我正在编写一个路径查找器,并有一个 21x21 数组,我想将其转换为单个字符串。数组将仅包含 1 和 0。将 1 放在一起以形成路径。
我当前的相关代码片段是
std::string str;
for(int i = 0; i < 21; i++)
{
for(int j = 0; j < 21; j++)
{
str += grid[i][j];
}
}
std::cout << str;
return (str);
当我运行代码时,它会跳转到包含以下内容的文件static inline size_t length(const char_type* __s) {return strlen(__s);}
说EXC_BAD_ACCESS
.
只需在循环中使用此代码
str +=std::to_string(grid[i][j]);
您似乎正在尝试访问不可用的索引 20,因为您从 0 开始循环。
您可以将迭代限制从 0 更改为 20。
您的数组是 20x20,因此从索引 0 到 19。 您的 for 循环正在检查从索引 0 到 20。 索引 [20] 不存在。 将 for 循环中的 "i < 21
" 更改为 :i < 20
。J 也一样。
grid[i][0]
充当仅分配了 20 个字节空间的字符指针,因此+=
操作可以防止您抓取超出最后一个字节的垃圾数据。
你在网格中迭代得太远了。 您的循环应该是:
std::string str;
// iterate through i index from 0 to 19.
for(int i = 0 ; i < 20; i++)
{
// iterate through j index from 0 to 19.
for(int j = 0 ; j < 20 ; j++)
{
// After testing it you do need to replace str += a[i][j]; for it to do what you want.
str.append(std::to_string(grid[i][j]));
}
}
std::cout << str;
return(str);
在您更正网格如何初始化后,我写了一个测试,看看我是否可以解决您无法解决的问题。但是,如果没有 append(to_string( 更改,它不会生成您期望的字符串。它将 int 解释为 char,并放置一个 ASCII 数值为 0 或 1 的字符。而不是使用"0"或"1"字符,其数字 ASCII 代码值为 48 和 49。
这是我完整的测试程序:在 Ubuntu VM 上使用"g++ -std=c++11"编译。
#include<iostream>
int main()
{
int a[21][21] = {};
a[1][1]=1;
a[2][1]=1;
std::string str;
for (int i = 0 ; i < 21; ++i)
{
for (int j = 0; j < 21; ++j)
{
str.append(std::to_string(a[i][j]));
}
}
std::cout << str << std::endl;
}
输出:
000000000000000000000010000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
相关文章:
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何将可变参数模板转换为多个单个模板?(C++竞争编程调试模板)
- 将字符向量转换为单个字符串
- 将单个字符转换为 std::string 前缀 \x01
- 如何在 c++ 中将 2D 数组转换为单个字符串
- 将C字符串转换为单个整数
- 我通过迭代加法将二进制数转换为十进制并检查单个字符(请参阅代码)的方法有什么问题?
- 允许对单个值进行隐式转换
- 从字符串中提取单个字符并将其转换为 int
- put_time具有转换说明符,该转换指定符,该指定符在一个月的单个数字上输出没有前面字符的单位天数
- 输入到字符串流并在单个语句中转换为字符串.可以没有帮助程序类
- 如何将单个字符转换为为基本密码哈希器设置整数,C++
- 如何将单个位转换为字符
- 使用类继承将单个喜欢的列表转换为双向链表
- 如何将char表中的单个炭转换为int
- 在什么基础上,由单个元素组成的参数包的折叠表达式被转换为未加括号的表达式
- 如何将双数组的单个元素转换为 QString
- 使用位操作将8字节数字中的每个字节中的一位转换为单个字节
- 快速将双重指针阵列转换为单个指针,可能是连续的
- 将IP地址转换为单个数字