2013-12-14 4 views
0
if(condition) 
    { 
     std::string interface = string1; 
    } 
    else 
    { 
     std::string interface = string2; 
    } 

C 프로그램에서 가능하면 알려주십시오.프로그램에서 std :: string을 if else 문으로 사용할 수 있습니까?

+0

표준 : : 문자열은 표준 C++ 라이브러리의 일부이며, 따라서 C 프로그램으로 만 사용할 수 없습니다 C++ 프로그램 그러나 C++로 프로그래밍하고 있다면 그렇습니다. – hamon

+0

C++에서 가능합니다. 하지만 어떤 문제를 해결하려고합니까? – juanchopanza

답변

1

그것은 C++에서 가능하지만, 코드 샘플에서, interfaceif-else의 각 블록의 제한된 범위에 존재한다. 단지 C++ 프로그램에서 사용할 수있는 모든 표준 : : 문자열의

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

첫째, 당신은 몇 가지 조건에 따라 문자열을 인스턴스화하려면 조건 연산자를 사용할 수 있습니다.

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. 

당신이 할 일은 다음과 같습니다 :

당신이했던 것처럼 선언하는 경우

둘째, 당신은 누구의 범위 ifthen 부분 각각 ifelse 부분 내에 포함되는 두 변수를

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

또는 @juanchopanza 말했듯이 :

,

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

0

C 언어에서는 가능하지만 C 언어에서는 가능하지 않으므로 C에는 std :: string 유형이 없기 때문에 가능합니다. 또한 각 변수 인터페이스는 해당 복합 명령문 내에서만 작동하고 if-else 문 외부에서는 액세스 할 수 없으므로 예제에는 greate 감지가 없습니다.

C에서는 문자 배열과 표준 함수 strcpy를 사용해야합니다. 예를 들어

char interface[20]; 

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

변수 인터페이스는 문자 배열의 문자열 1 또는 문자열 2를 수용하기에 충분히 큰 것이어야한다

관련 문제