Можно ли использовать std :: string в программе как часть оператора if else [closed]

0
 if(condition)
    {
      std::string interface = string1;
    }
    else
    {
      std::string interface = string2;
    }

Может кто-нибудь сообщит мне, если это возможно в программе на C.

  • 0
    std :: string является частью стандартной библиотеки C ++ и, следовательно, не может использоваться в программе на C, а только в программе на C ++. Но если вы программируете на C ++, то да, это можно сделать.
  • 0
    Это возможно в C ++. Но какую проблему вы пытаетесь решить?
Теги:
stdstring

3 ответа

1

Это возможно в C++, но в вашем примере кода interface существует только в ограниченной области каждого блока if-else. Если вы хотите создать экземпляр строки на основе некоторого условия, вы можете использовать условный оператор:

std::string interface = condition ? string1 : string2;
0

Прежде всего 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;

0

Как было сказано здесь, это возможно в C++, но не в C, потому что C не имеет типа std :: string. Также ваш пример не имеет никакого здравого смысла, потому что каждый переменный интерфейс будет доступен только в соответствующих составных операторах, а вне оператора if-else он не будет доступен.

В C вы должны использовать массивы символов и стандартную функцию strcpy. Например

char interface[20];

 if(condition)
    {
      strcpy( interface, string1 );
    }
    else
    {
      strcpy( interface, string2 );
    }

при условии, что переменный интерфейс достаточно велик, чтобы разместить массивы символов string1 или string2

Ещё вопросы

Сообщество Overcoder
Наверх
Меню