c++ - 如何将字符串转换为字符矩阵

标签 c++ arrays string multidimensional-array

我想把一个字符串放到一个char nxn矩阵中,这使得字符串"abcdefghi"变成了一个3x3 char矩阵,变成了 {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; 打印一整行,但行不以 '\0' 结尾,因此 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 << '\n';
    }
    std::cout << std::flush;
    return 0;
}

关于c++ - 如何将字符串转换为字符矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55347757/

相关文章:

c++ - 如何将 void 指针转换为 int[3]?

java - 将 json 字符串转换为对象数组

javascript - 为什么这个 array.reduce 函数根本没有减少?初学者

javascript - 如何基于动态键创建嵌套对象

c++ - 为什么在函数参数中将字符串作为常量字符串传递

actionscript-3 - ActionScript中单引号和双引号字符串之间的区别

c++ - 危险类型转换?

c++ - C++中两个整数的乘法

c++ - 一个头文件中的多个类与每个类一个头文件

c++ - c++ 的构造函数中的 const string &name 和 string name 之间的区别