【发布时间】:2016-04-18 22:10:37
【问题描述】:
我是 C++ 新手,但对 Python 非常熟悉。 Python 中的琐碎任务在 C++ 中似乎要复杂得多。我正在尝试制作一个简单的游戏,其中在屏幕上打印外语单词,用户猜测值,如果正确,他们将获得一分并继续猜测屏幕上打印的其他数字的值是什么。我面临的问题是,对于我正在学习的课程,我们不允许仅使用字符串字符数组。导师没有解释原因。
在 Python 中,我会为外来词创建一个字符串元组:
foreignWords = ('een', 'twee', 'drie'....)
index 0 是荷兰语中的一个单词,index 1 是荷兰语中的两个单词,等等。我会使用一个函数来随机选择一个介于 0 和 foreignWords 长度之间的数字,将其打印在屏幕上,等等。做起来很简单。
我想我可以简单地创建一个结构数组并将字符数组复制到结构数组中。
struct numbers
{
char numberWord[7];
};
int main()
{
numbers numberChoices[10];
strcpy(numberChoices[0].numberWord, 'een');
strcpy(numberChoices[1].numberWord, 'twee');
strcpy(numberChoices[2].numberWord, 'drie');
strcpy(numberChoices[3].numberWord, 'vier');
strcpy(numberChoices[4].numberWord, 'vijf'):
strcpy(numberChoices[5].numberWord, 'zes');
etc.
但这不起作用。它产生一个错误:
string.h:129:14: error: initializing argument 2 of ‘char* strcpy(char*, const char*)’ [-fpermissive]
extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
^
但是,如果我创建一个 for 循环并通过 cin 输入 char 数组 >> 结构数组将存储我的条目并且可以通过索引调用它们。
基本上,我想做的是创建一个 char 数组的数组,这样我可以索引获取值并轻松跟踪单词的数值 (numberChoices[i].numberWord, i+1 = 打印字的数值)。我不知道这种方法是否合适,但我正在努力提高效率,因为结构数组将被引用很多来读取内存中存储的内容,将该值保存到新变量并操作引用的字符通过随机删除字符并让用户猜测打印的单词的值来排列数组。
在 char 数组元素被硬编码的情况下,制作 char 数组的正确方法是什么?
【问题讨论】:
-
在 c++ 中,字符串用双引号括起来:
"foo"。单引号仅用于字符。 -
在 C++ 中,您将使用
std::vector或std::string。 -
另外,单个
char是一个单个char,它只能容纳一个单个字符而不是一个字符串。 -
"我们不允许只使用字符串字符数组。"您的讲师明确禁止了
char const* numberchoices[] = { "een", "twie", "drie", "vier" };之类的内容,但是将 char 数组包装在结构中以某种方式可以吗? -
投票关闭,因为只是拼写错误(使用
'而不是")。