在Objective C ++中将字符串放入2D矩阵

时间:2014-01-18 05:44:53

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

所以我使用的是Objective C ++,我希望使用ASCII代码将字符串放入4 x(X = string / 4的长度)int数组中。字符串的第一个四分之一(格式化为完全适合4 x X数组)应该在[0] [col]中,第二个四分之一进入[1] [col],第三个进入[2] [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];
}

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我认为我不明白你要做什么..

给定一个字符串:"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

答案 2 :(得分:0)

实际上这样的双循环最终最适合我:

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++;
    }
}