括号中的变量 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' 等字符,而是包含数字 428153,然后您可以使用 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);

我现在使用类似的东西。