我目前正在编写一个 C++ 程序,该程序可以为使用文件输入/输出的人员随机选择角色。
我快完成了,我经常构建以确保我的代码正常工作而不是伪代码。我的代码片段收到错误 -
randomPrefs.open ("Preferences/"members[random]"-Preferences");
我正在尝试访问 Preferences/foo-Preferences 中的文本文件,并且该变量是由上面的一些代码随机生成的。我已经计算了随机片段,它工作得很好,所以我不需要将它包含在这里。我得到的错误是:
Avalon - Omnipotent.cpp:61:21: error: unable to find string literal operator 'operator""members' with 'const char [13]', 'unsigned int' arguments
因此,我四处寻找此错误,但一无所获。我想在它周围加一个小括号,结果导致了一个不同的错误 - Avalon - Omnipot.cpp:61:51: 错误:表达式不能用作函数
如有任何帮助,我们将不胜感激。
这里有一个小注释,当它周围没有括号时,我会收到关于我的变量未被使用的警告 -
Avalon - Omnipotent.cpp:39:21: warning: unused variable 'members' [-Wunused-variable]
但是,第二个错误不会给出有关未使用变量的警告。
嘿,我的变量是这样的:
unsigned const char members[22] =
我分配了值“random”,它从 0 - 21 中选择一个随机数,并将生成的数字分配给值 random,并将变量声明为 Members[random]。它工作得很好,我只需要有关这些错误的帮助。
救命!
最佳答案
要连接字符串,请执行以下操作:
std::string s = std::string("Preferences/") + members[random] + "-Preferences";
randomPrefs.open(s);
如果您不需要中间命名变量,则:
randomPrefs.open(std::string("Preferences/") + members[random] + "-Preferences");
如果成员不包含 'A'
、'B'
、'C'
或 '4 等字符'
,并且包含数字 4
、28
或 153
,那么您可以通过以下方式将数字转换为适当的字符串:使用std::to_string
。
std::string s = std::string("Preferences/") + std::to_string(members[random]) + "-Preferences");
有关未使用变量的警告没有用,这是因为编译器在代码中发现了早期错误。如果你解决了上述问题,这个问题也应该消失。
关于c++ - 括号中的变量 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37514258/