if(condition)
{
std::string interface = string1;
}
else
{
std::string interface = string2;
}
Может кто-нибудь сообщит мне, если это возможно в программе на C.
Это возможно в C++, но в вашем примере кода interface
существует только в ограниченной области каждого блока if-else
. Если вы хотите создать экземпляр строки на основе некоторого условия, вы можете использовать условный оператор:
std::string interface = condition ? string1 : string2;
Прежде всего std :: string может использоваться только в программе C++.
Во- вторых, если вы объявите, как вы это сделали, то у вас есть две переменные, область действия которых заключена в then
части, if
и else
часть, if
соответственно:
if(condition)
{
// variable scope start
std::string interface = string1;
// variable scope end. beyond this point, the variable interface no longer exist.
}
else
{
// variable scope start (the old variable interface no longer exists. this is a new variable
std::string interface = string2;
// variable scope end.
}
// at this point none of the variable exist anymore.
что вам нужно сделать:
std::string interface;
if (condition) {
interface = string1;
} else {
interface = string2;
}
или, как @juanchopanza сказал:
std :: string interface = условие? string1: string2;
Как было сказано здесь, это возможно в C++, но не в C, потому что C не имеет типа std :: string. Также ваш пример не имеет никакого здравого смысла, потому что каждый переменный интерфейс будет доступен только в соответствующих составных операторах, а вне оператора if-else он не будет доступен.
В C вы должны использовать массивы символов и стандартную функцию strcpy. Например
char interface[20];
if(condition)
{
strcpy( interface, string1 );
}
else
{
strcpy( interface, string2 );
}
при условии, что переменный интерфейс достаточно велик, чтобы разместить массивы символов string1 или string2