c++ - 创建一个基于字符串的Class数组

标签 c++ arrays string class

我创建了一个名为“letter”的类:

class Letter
{
    char letter{};
    bool guessed{ false };

    public:
        void setLetter(std::string);
};
并且我想创建一个数组“Letter”。数组的大小应为用户输入的字符串的大小,并且如果可能,字符串的每个字母应存储在letter对象的1个元素中。
我尝试了以下方法:
std::string word;
Letter test[] = word;
"initialization with {...} expected for aggregate object"
std::string word;
Letter test[word.length()]; // and then iterate through each element of the string
"expression must have a constant value"
编辑:
解决了
std::string word;
std::vector<Letter> test;
for (int i = 0; i < word.length(); i++)
{
    test[i].setLetter(word[i]);
}

最佳答案

在现代C++中,考虑动态数组时应首先使用的工具是 std::vector 。在这里,您将使用std::vector<Letter>。在这种情况下,您可以编写std::vector<Letter> test(word.length());来使包含word.length()的容器默认构造为Letter类的实例。std::vector的行为基本上像一个数组。您可以使用operator[]以相同的方式访问元素。例如,test[1]访问第二个元素,无论testLetter[]数组还是std::vector<Letter>。您还应该熟悉here列出的其他功能。
如果数组的大小不是动态的(在编译时已知),则仍然优选使用 std::array 。 C样式数组在现代C++中几乎没有用例,因此应避免使用新的,更安全的替代方法。

关于c++ - 创建一个基于字符串的Class数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63399302/

相关文章:

c++ - 关于从设备向主机复制数据时的推力::execution_policy

c++ - 对函数写测试用例的疑惑

c++ - 如何使用 SSE 使用条件处理整数数组

java - 如何在单击按钮时增加变量?

c# - 将 <br> 解析为纯文本新段落

c - 如何使用 C 将字符串中的每个字符存储为数字

c++ - 我是否错误地使用了这个开关盒?

javascript - 如何使用正则表达式在javascript中拆分字符串

c++ - 初始化错误 : How to create a multi dimensional zero array in C++

比较C中的两个字符串?