我目前正在编写一个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 - Omnipotent.cpp:61:51:错误:表达式不能用作函数
任何帮助都将不胜感激。
这里有一点注意,如果没有括号,我会收到关于我的变量没有被使用的警告 -
Avalon - Omnipotent.cpp:39:21: warning: unused variable 'members' [-Wunused-variable]
但是,第二个错误不会对未使用的变量发出警告。
嘿,我的变量是什么样的:
unsigned const char members[22] =
我分配了值“随机”,它选择0到21之间的随机数,并将生成的数字赋值为随机值,并将变量声明为成员[random]。它工作得很好,我只需要帮助解决这些错误。
帮助!
答案 0 :(得分:3)
要连接字符串,请执行以下操作:
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
,{{1 }}或28
,然后您可以使用153
将数字转换为相应的字符串。
std::to_string
关于未使用变量的警告没有用,这是由于编译器在代码中看到了先前的错误。如果你解决了上述问题,那也应该消失。
答案 1 :(得分:0)
如果您正在尝试进行字符串连接,最好使用itoa() -> std::string(const char*)
或to_string()
作为字符串数字,并使用operator+()
或{{1}进行连接。
请注意std::string.append()
是C ++ 11:
http://coliru.stacked-crooked.com/a/eb3677d7abffca00
to_string()
答案 2 :(得分:0)
@YoBro:这里! - Bill Lynch 7分钟前
在我的代码完成后对我的代码进行建模!
std::string s = std::string("Preferences/") + std::to_string(members[random]) + "-Preferences";
randomPrefs.open(s);
我现在使用类似的东西。