c++ - 修改字符串数组中的字符串

标签 c++ string

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

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

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

最佳答案

在您的特定情况下,您似乎总是有一些字符被空格包围,因此您可以简单地执行 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 字符串的部分要处理std::strings)

关于c++ - 修改字符串数组中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50140435/

相关文章:

c++ - 浏览器扩展与系统托盘应用

c++ - 使用 Bresenham 的直线算法绘制直线

java - 如何构建/编译 C++、Java 和 Python 项目?

string - 如何在知道需要多大之前分配一个字符串

c++ - 固定大小的字符串类型容器

c# - 来自字符串(路径)的文件名,不存在文件

c++ - 为什么我的代码在 3 轮游戏后不能正确切换玩家名称?

c++ - 使用 QLockFile::setStaleLockTime() 但锁不会过时?

c# - 如何将字符串中的 "/"替换为 "\/"?

string - Dart tryParse double vs string of double