如何将字符串转换为char矩阵

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将字符串转换为char矩阵相关的知识,希望对你有一定的参考价值。

我想把一个字符串放入一个char nxn矩阵,这使得字符串"abcdefghi"成为一个3x3字符矩阵,并成为{abc; def; ghi}但它不能保存正确。

我尝试在第一个循环中输出每个ijch[i][j]s[j+i*3],它们看起来正确,但在最终输出中,它出错了。

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int main()
{
    char ch[2][2];
    string s = "abcdefghi";
    int i, j;
    for (i = 0; i < 3; i++)
    {
        for(j = 0; j < 3; j++)
        {
            ch[i][j] = s[j + i * 3];
        }
    }

    for (i = 0; i < 3; i++)
    {
        cout << ch[i] << endl;
    }
    return 0;
}

我希望ch矩阵成为{abc; def; ghi},但输出为{abdegi; degi; gi}

答案

您的代码有两个问题: 1. char ch[2][2];应该是char ch[3][3]; 2.您假设您可以使用单个cout << ch[i] << endl;打印整行,但行不以''结束,因此cout会打印所有内容,直到它达到空值。

这是一个固定版本:

#include <iostream>


int main()
{
    char ch[3][3];
    auto s = "abcdefghi";
    auto* ptr = s;
    for (auto& r1 : ch)
    {
        for (auto& r2 : r1)
        {
            r2 = *ptr++;
        }
    }

    for (const auto& r1 : ch)
    {
        for (auto r2 : r1) // char is trivial to copy
        {
            std::cout << r2;
        }
        std::cout << '
';
    }
    std::cout << std::flush;
    return 0;
}

以上是关于如何将字符串转换为char矩阵的主要内容,如果未能解决你的问题,请参考以下文章

如何将char数组转换回字符串[重复]

matlab中text 显示变量

如何在 C++ 中将字符串转换为 char 数组?

将 char* 转换为 struct

perl中如何将十六进制转换为char字符串

如何将 SINGLE char 转换为系统字符串 C++?