2017-12-12 4 views
-1

저는 C++을 사용하고 있으며 std::string을 사용하고 싶지 않습니다. 조건부 값을 기반으로 C 스타일 문자열의 값을 설정하려고합니다. 이것이 가능한가?C++에서 조건부로 C 스타일 문자열을 설정하는 방법?

여기에 최소한의 작업 예입니다

#include <iostream> 

void print_thing(int a) 
{ 
    char* message; 

    switch (a) 
    { 
    case 1: 
     message = "case 1"; 
     break; 
    default: 
     message = "case 2"; 
     break; 
    } 

    std::cout << message << std::endl; 
} 

int main() 
{ 
    int a{ 5 }; 
    print_thing(a); 
} 

이 프로그램에 오류가 아니지만 리터럴 문자열이 아닌 constchar*를 설정하는 나쁜 양식을 보인다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

+2

포인터를 초기화하면 어떻게됩니까? 예 :'char * message = nullptr;' –

+3

'a'가 1이나 2가 아니면'message'는 어떤 값을 얻습니까? 이는 컴파일러가 불평하는 정확한 오류입니다. 거기에 할당을 가진'switch'에있는'default' 절 또는 선언에있는 초기화는 문제를 제거 할 것입니다. – Alejandro

+0

경고가 아니라 오류 일 수 있습니까? – user463035818

답변

4

C++의 문자열 리터럴이 const char[] (C와는 달리 char[] 인 경우)을 제외하고 코드는 문제가 없습니다. 따라서 변수는 const char* message;으로 선언해야합니다.

관련 문제