2014-04-24 7 views
1

이 작업을 수행하는 데 더 적은 노력이 있었는지 궁금합니다. 버퍼에 콜론으로 구분 된 정보와 함께 UDP 패킷에 신용 카드 정보를 넣는 할당이 있으므로 Bob Jones:7845 6133 7889 4425:09/2017:654.99이 단일 문자 배열에 저장됩니다.C++에서 C 문자열을 연결하는보다 우아한 방법은 무엇입니까?

C++에서
int main(int argc, char **argv) 
{ 
    char buffer[256]; 
    char name[64]; 
    char cardNum[32]; 
    char expiration[8]; 
    char amount[14]; 

    while(true) 
    { 
     /********* 
     (Input prompts go here, break if user types quit) 
     *********/ 

     strcpy(buffer, amount); 
     int length = strlen(buffer); 
     buffer[length] = ':'; 
     strcat(buffer, cardNum); 
     length = strlen(buffer); 
     buffer[length] = ':'; 
     strcat(buffer, name); 
     length = strlen(buffer); 
     buffer[length] = ':'; 
     strcat(buffer, expiration); 

     /*************** 
     (run all of the networking code) 
     ***************/ 
    } 

    return 0; 
} 
+6

,에 이유를 사용하는 C 문자열 모든? –

+0

간단한 std :: 문자열 연결 :'std :: string (amount) + ':'+ cardNum + ':'+ name + ':'+ expiration' –

+0

더 큰 C++ 프로그램에서 C 문자열을 필요로하는 C 함수를 사용하고 있습니다. . – qwerty26

답변

2

, 당신은 +를 사용 std::string 객체를 연결할 수 있습니다, 또는 string stream에 추가합니다. 에서

모두 전체 코드가 한 줄에 깔끔하게 때문에, 내가 여기 바람직하고 생각 형식화 된 출력에 액세스 할 수 있습니다 ++ C 및 C : 나는 물어 봐야

sprintf(buffer, "%s:%s:%s:%s", amount, cardNum, name, expiration); 
+0

예! 훌륭한! 이렇게하려면 형식화 된 출력을 사용하고 싶었지만 무엇이 가장 좋은 방법인지는 확실하지 않았습니다. 이것은 바로 그 사고의 범위 내입니다. 감사합니다. – qwerty26

+2

버퍼 오버 플로우를 피하기 위해'snprintf'를 사용하십시오. –