是否可以在程序中使用std :: string作为if else语句的一部分

时间:2013-12-14 10:48:25

标签: c++ c stdstring

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

有人可以告诉我这是否可以在C程序中使用。

3 个答案:

答案 0 :(得分:1)

可以在C ++中使用,但在您的代码示例中,interface仅存在于if-else的每个块的有限范围内。如果要根据某些条件实例化字符串,可以使用条件运算符:

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

答案 1 :(得分:0)

首先,std :: string只能在C ++程序中使用。

其次,如果你像你那样声明,那么你有两个变量,其范围分别包含在then的{​​{1}}部分和if的{​​{1}}部分:

else

你应该做的是:

if

或者,正如@juanchopanza所说:

  

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

答案 2 :(得分:0)

正如在这里所说的,它可能在C ++中而不是在C中,因为C没有类型std :: string。此外,您的示例没有任何意义,因为每个变量接口仅在相应的复合语句中存活,并且在if-else语句之外,它将无法访问。

在C中你应该使用字符数组和标准函数strcpy。例如

char interface[20];

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

前提是变量接口足够大以容纳字符数组string1或string2