【问题标题】:Putting String into a 2D Matrix in Objective C++在 Objective C++ 中将字符串放入二维矩阵
【发布时间】:2014-02-07 15:32:42
【问题描述】:

所以我使用的是 Objective C++,我想通过使用 ASCII 码将一个字符串放入一个 4 x X(X = 字符串长度/4)int 数组中。字符串的第一季度(格式化为完全适合 4 x X 数组)应该进入 [0][col],第二季度进入 [1][col],第三季度进入 [2] [col] 和第四节变成 [3][col]。所以我尝试了以下 4 个 for 循环,但它根本不起作用,而且我似乎无法让它以某种方式工作。任何建议将不胜感激。

textMatrix 是我想在其中放置 NSString/ASCII 数字的矩阵,而 inputFinal 是 NSString 本身。长度 * (1/4) 或其他也总是整数。

for(int i = 0; i < length*(1/4); i++)
{
    textMatrix[0][i] = (int)[inputFinal characterAtIndex: i];
}
for(int j = length*(1/4); j < length*(2/4); j++)
{
    textMatrix[1][j] = (int)[inputFinal characterAtIndex: j];

}
for(int k = length*(2/4); k < length*(3/4); k++)
{
    textMatrix[2][k] = (int)[inputFinal characterAtIndex: k];
}
for(int l = length*(3/4); l < length; l++)
{
    textMatrix[3][l] = (int)[inputFinal characterAtIndex: l];
}

【问题讨论】:

  • 你如何验证它不起作用,你打印了值吗?
  • 我使用了断点,然后检查了 textMatrix 中的值,但它几乎为空

标签: c++ objective-c arrays nsstring copying


【解决方案1】:

您可以在 1 个循环中重写您的 4 个循环:

 for(int i = 0; i < length; i++)
 {
   textMatrix[i/4][i%4] = (int)[inputFinal characterAtIndex:i];
 }

【讨论】:

    【解决方案2】:

    我想我不明白你在做什么..

    给定一个字符串:"Here";

    你想要吗:

    Matrix[0][0] = 'H';
    Matrix[1][1] = 'e';
    Matrix[2][2] = 'r';
    Matrix[3][3] = 'e';
    

    如果是这样,那么这有效:

    #import <objc/objc.h>
    #import <objc/Object.h>
    #import <Foundation/Foundation.h>
    
    @implementation TestObj
    int main()
    {
        NSString* str = @"Here";
    
        int matrix[4][4] = {0};
    
        for (int i = 0, j = 0; j < 4; ++j)
        {
            matrix[i][i++] = (int) [str characterAtIndex: j];
        }
    
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                printf("%c", (char)matrix[i][j]);
            }
        }
    
        return 0;
    }
    @end
    

    上面打印Here

    【讨论】:

    • 这就是我想要做的,假设我们使用“工作正常”,那么我想要:Matrix[0][0] = 'w';矩阵[0][1] = 'o';矩阵[1][0] = 'r';矩阵[1][1] = 'k';矩阵[2][0] = 's';矩阵[2][1] = ' ';矩阵[3][0] = 'o';矩阵[3][1] = 'k';矩阵[3][3] = 'e';
    【解决方案3】:

    实际上像这样的双循环对我来说效果最好:

    int index = 0;
    for(int row = 0; row < 4; row++)
    {
        for(int col = 0; col < length/4; col++)
        {
            textMatrix[row][col] = (int)[inputFinal characterAtIndex:index];
            index++;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多