Ребята, мне нужно, чтобы кто-то решил эту проблему? когда я компилирую этот код, у меня появляется эта ошибка:
Error: IntelliSense: expression must have integral or enum type
у меня есть проблемы в этой части:
Console(0, V("seta sv_hostname " + servername + ";\n"));
так как я могу это исправить
if (strncmp(command, V("exec config_mp"), 14) == 0)
{
if (GAME_MODE == 'D')
{
CIniReader iniReader(V(".\\teknogods.ini"));
char *servername = iniReader.ReadString(V("Settings"),V("Servername"),"");
if (strcmp(servername,"") == 0)
{
info("Server name set to defult.");
}
else
{
//Console(0, V("seta scr_teambalance 1;\n"));
Console(0, V("seta sv_hostname " + servername + ";\n"));
info("server name set to: %s.", servername);
}
}
}
Вы не можете объединить две строки C с +
,
В C и C ++ строковые литералы представляют собой массивы символов, которые при использовании в качестве значения r в выражении превращаются в указатель на символ. В C (и C ++) вы можете выполнять арифметику указателей, что означает, что вы можете добавить или вычесть целое число (или любой целочисленный тип) из указателя, а также вы можете вычесть два указателя, чтобы получить разницу, но вы не можете добавить два указателя вместе , Выражение "A" + "B"
неверно, так как это будет пытаться добавить два const char*
, Это то, что говорит вам компилятор: для выражения "seta sv_hostname " + servername
чтобы быть правильным, servername
должно быть целым числом или перечислением.
Если кодирование C ++ вы можете использовать std::string
, для которых есть перегружены operator+
что либо другое std::string
или же const char*
а затем использовать c_str
функция-член для извлечения const char*
использовать в интерфейсах, которые требуют C строк.
Других решений пока нет …