2014-11-07 6 views
1

을 연결하여 나는 리팩토링 싶다. 이상적으로 나는 const primitive 타입으로 이것을 할 수 있어야한다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 답변의 형태로 의견을 컴파일초기화 CONST 숯불 *이 다른 문자 *

+1

는 드물게 경우가 너무 없지만, 전 처리기 매크로가 더 적절한 것 같다. – WhozCraig

+0

하위 문자열을 다시 사용할 수 없습니다. 각 리터럴 문자열은 메모리에서 연속적이어야합니다. 메모리 사용을 최적화하려면 코드로 (즉, 런타임 중에) 수행해야합니다. –

+1

또는 std :: string을 사용하여 연결하십시오. 그게 당신에게 영향을 미치는지 모르겠습니다. –

답변

3

:

  1. 매크로를 사용합니다.

    #define QUICK "quick " 
    
    char const* arr = "The " QUICK "brown"; 
    
  2. std:string을 사용하십시오.

    std::string quick = "quick "; 
    std::string arr = std::string("The ") + quick + "brown"; 
    

근무 코드 :

#include <iostream> 
#include <string> 

#define QUICK "quick " 

void test1() 
{ 
    char const* arr = "The " QUICK "brown"; 
    std::cout << arr << std::endl; 
} 

void test2() 
{ 
    std::string quick = "quick "; 
    std::string arr = std::string("The ") + quick + "brown"; 
    std::cout << arr << std::endl; 
} 

int main() 
{ 
    test1(); 
    test2(); 
} 

출력 :

The quick brown 
The quick brown 
+0

나는이 대답을 수락하고있다. 문자열을 사용하고 다른 함수 안에 숨길 것이라고 생각합니다. 나는 aggregator보다는 공헌 한 모두를 upvote 할 수 있으면 좋겠지 만, 어이! 그것이 삶의 방식입니다. – user3757652

+0

내가하고 싶은 일을 할 수 없다는 것을 확인해 주셔서 감사합니다. 그것은 매우 도움이되었습니다. – user3757652