括号中的变量 C++
Variable in Parentheses C++
我目前正在编写一个 C++ 程序,为使用文件 input/output 的人随机选择角色。
我快完成了,我经常构建以确保我的代码正常工作而不是伪代码。我的代码片段出现错误 -
randomPrefs.open ("Preferences/"members[random]"-Preferences");
我正在尝试访问 Preferences/foo-Preferences 中的文本文件,该变量由其上方的某些代码随机生成。我已经 couted 随机片段并且它工作得很好,所以我不需要在这里包含它。我得到的错误是:
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] =
然后我分配了值 "random",它从 0 - 21 中选择一个随机数,我将生成的数字分配给值 random,并将变量声明为 members[random]。它运行完美,我只需要帮助解决这些错误。
求助!
如果您尝试进行字符串连接,可能最好使用 itoa() -> std::string(const char*)
或 to_string()
作为数字字符串,并使用 operator+()
或 std::string.append()
进行串联。
注意 to_string()
是 C++11:
http://coliru.stacked-crooked.com/a/eb3677d7abffca00
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello ";
int i = 2;
std::string str2 = " World!";
std::string output = "";
output.append(str1).append(std::to_string(i)).append(str2);
std::cout << output << std::endl;
return 0;
}
要连接字符串,请执行以下操作:
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");
有关未使用变量的警告没有用,这是因为编译器在您的代码中发现了较早的错误。如果您解决了上述问题,那应该也会消失。
@YoBro:这里! – 比尔·林奇 7 分钟前
在他使我的代码工作之后,对我的一些代码进行建模!
std::string s = std::string("Preferences/") + std::to_string(members[random]) + "-Preferences";
randomPrefs.open(s);
我现在使用类似的东西。
我目前正在编写一个 C++ 程序,为使用文件 input/output 的人随机选择角色。
我快完成了,我经常构建以确保我的代码正常工作而不是伪代码。我的代码片段出现错误 -
randomPrefs.open ("Preferences/"members[random]"-Preferences");
我正在尝试访问 Preferences/foo-Preferences 中的文本文件,该变量由其上方的某些代码随机生成。我已经 couted 随机片段并且它工作得很好,所以我不需要在这里包含它。我得到的错误是:
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] =
然后我分配了值 "random",它从 0 - 21 中选择一个随机数,我将生成的数字分配给值 random,并将变量声明为 members[random]。它运行完美,我只需要帮助解决这些错误。
求助!
如果您尝试进行字符串连接,可能最好使用 itoa() -> std::string(const char*)
或 to_string()
作为数字字符串,并使用 operator+()
或 std::string.append()
进行串联。
注意 to_string()
是 C++11:
http://coliru.stacked-crooked.com/a/eb3677d7abffca00
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello ";
int i = 2;
std::string str2 = " World!";
std::string output = "";
output.append(str1).append(std::to_string(i)).append(str2);
std::cout << output << std::endl;
return 0;
}
要连接字符串,请执行以下操作:
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");
有关未使用变量的警告没有用,这是因为编译器在您的代码中发现了较早的错误。如果您解决了上述问题,那应该也会消失。
@YoBro:这里! – 比尔·林奇 7 分钟前
在他使我的代码工作之后,对我的一些代码进行建模!
std::string s = std::string("Preferences/") + std::to_string(members[random]) + "-Preferences";
randomPrefs.open(s);
我现在使用类似的东西。