【问题标题】:trying to convert a string to char useing .substr尝试使用 .substr 将字符串转换为 char
【发布时间】:2019-04-26 10:47:25
【问题描述】:

我正在尝试使用以下方法将一维字符串数组转换为二维字符数组:

    '''''''''''''''
    variables
    '''''''''''''''
    const int width = 20;
    const int height = 20;  
    char arena[width][height];
    string arenaline[height];

    '''''''''''''''
    setup
    '''''''''''''''
    arenaline[1] = "####################";
    arenaline[2] = "#..................#";
    arenaline[3] = "#..................#";
    arenaline[4] = "###...###..###...###";
    arenaline[5] = "#.......#..#.......#";
    arenaline[6] = "###...###..###...###";
    arenaline[7] = "#..................#";
    arenaline[8] = "###...###..###...###";
    arenaline[9] = "#.......#..#.......#";
    arenaline[10] = "#########..#########";
    arenaline[11] = "###..............###";
    arenaline[12] = "###.#####..#####.###";
    arenaline[13] = "###.####....####.###";
    arenaline[14] = "###.####....####.###";
    arenaline[15] = "#.....###..###.....#";
    arenaline[16] = "#.....###..###.....#";
    arenaline[17] = "#..#..###..###..#..#";
    arenaline[18] = "#.....###..###.....#";
    arenaline[19] = "#.....###..###.....#";
    arenaline[20] = "####################";

    '''''''''''''''
    conversion
    '''''''''''''''
for (int i = 0; i < height; i++)
{
    for (int j = 0; j < width; j++)
    {

        arena[j][i] = arenaline[i].substr(j,1);

    }

}

我希望它从子字符串转换为字符,以便我可以在数组中使用它。

我不能使用字符串代替字符,因为它破坏了将数组输出到控制台的函数。

【问题讨论】:

  • 为什么不把std::string不支持的功能改成std::string支持呢?
  • 另外不要忘记数组索引是从零开始的(所以你的初始化是错误的,并且无论如何都不会工作,如图所示)并且 C++ 中的 char 字符串实际上被称为 null-terminated 字节字符串,如果你想对字符串使用 C 字符串函数,你也需要为该终止符留出空间。

标签: c++ string char data-conversion


【解决方案1】:

substr 返回一个字符串。对于“单字符”字符串,string 不会隐式转换为 char。

对字符串的单个字符进行寻址的正确方法是 string::operator[] 或 string::at()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 2013-05-13
    • 2020-09-30
    相关资源
    最近更新 更多