修改字符串数组

时间:2018-05-02 17:32:59

标签: c++ string

我有一个字符串数组,我想随意修改它的元素。这是代码:

char pieces[9][4] = { "   ", " o ", " a ", "   ", "   ", "   ", " b ", "   ", "   " };
pieces[2] = { " x " };

据我所知,件[]中的元素是字符串文字,因此无法更改(我不确定为什么会这样)。也许它可以使用std :: string或vector来解决。但是,我想知道是否可以使用字符串数组来完成这种操作或非常类似的操作。可以使用一个字符串数组来完成这样的事情吗?

5 个答案:

答案 0 :(得分:4)

在您的特定情况下,看起来您总是有一些由空格包围的字符,因此您只需执行pieces[2][1] = 'x';即可修改该元素。然而...

您认为std::stringstd::vector可以更轻松地做到这一点是正确的,但由于我们已经知道了尺寸,因此std::array可能会更好:

std::array<std::string, 9> pieces = { "   ", " o ", " a ", "   ", "   ", "   ", " b ", "   ", "   " };
pieces[2] = " x ";

您可能会注意到下标运算符仍适用于std::array。这意味着,即使您切换到std::array,您甚至可能无法在其他代码中进行过多更改(仅处理要处理的c字符串的部分{ {1}})

答案 1 :(得分:3)

您可以使用strcpy();

请参阅以下示例代码。请参阅工作代码here

int main(void) 
{
    char pieces[9][4] = { "   ", " o ", " a ", "   ", "   ", "   ", " b ", "   ", "   " };

    printf("At point 1: %s\n",pieces[2]);
    strcpy(pieces[2]," x ");
    printf("At point 2: %s",pieces[2]);
    return 0;
}

<强>输出:

At point 1:  a 
At point 2:  x 

答案 2 :(得分:1)

确实

pieces[2][0] = ' ';
pieces[2][1] = 'x';
pieces[2][2] = ' ';
pieces[2][3] = '\0';

做你想做的事吗?

答案 3 :(得分:1)

首先,使用像class ClassA extends SomeClass { public function __construct(ClassB $classB) { $this->classB = $classB; } } class ClassB extends SomeOtherClass { public function __construct(ClassA $classA) { $this->classA = $classA; } } 这样的大括号是初始化的方式,所以你不能这样做。

其次,pieces[2] = { " x " };是一个char数组,所以它不是可修改的l值。

您可以逐个元素或使用pieces[2]函数更改其内容。

答案 4 :(得分:0)

仅仅为了不同用户提供的不同解决方案,选项是:

  • 一次修改一个char元素。示例:件[2] [1] ='x'

  • 使用strcpy()。示例: strcpy(pieces [2],“x”)

  • 另一种类型: std :: array std :: string std :: vector