2014-10-19 1 views
-1

str은 문자열이고, ptr은 char 포인터의 배열입니다. ptr에 포함 된 값으로 str을 초기화해야합니다.char 포인터 값의 배열에서 문자열을 초기화하는 방법 (char * ptr [])

void help(char* ptr[]) { 
    cout << ptr[0]; 
    cout << ptr[1]; 
    cout << ptr[2]; 
    cout << ptr[3]; 
    string str = ptr[0]; 
    cout << endl << str << endl; 

} 
int main(int argc, char* argv[]) { 
    char arr1[] = "Hello"; 
    char arr2[] = "Hi" ; 
    char arr3[] = "Blah"; 
    char arr4[] = "Blah"; 
    char* ptr[4]; 
    ptr[0] = arr1; 
    ptr[1] = arr2; 
    ptr[2] = arr3; 
    ptr[3] = arr4; 
    help(ptr); 
} 
+2

입니다 경우? 'char *'배열은 여러분이 이미 알고있는 것처럼 하나의 문자열이 아니라 여러개의 문자열입니다. – Mat

+1

출력은 무엇을 기대합니까? – juanchopanza

+0

각각을 연결 하시겠습니까? – BLUEPIXY

답변

0

내가 제대로 이해 당신이 필요로하는 것은 다음과 같은

#include <iostream> 
#include <string> 
#include <numeric> 
#include <cstring> 

std::string help(const char * ptr[], size_t n) 
{ 
    size_t len = std::accumulate(ptr, ptr + n, (size_t)0, 
            [](size_t acc, const char *p) 
            { 
            return acc + std::strlen(p); 
            }); 

    std::string str; 
    str.reserve(len); 

    str = std::accumulate(ptr, ptr + n, str, 
          [](std::string &s, const char *p) -> std::string & 
          { 
          return s += p; 
          }); 

    return str; 
} 

int main() 
{ 
    const char * ptr[] = 
    { 
     "Hello ", 
     "Hi ", 
     "Blah ", 
     "Blah " 
    };   

    std::cout << help(ptr, sizeof(ptr)/sizeof(*ptr)) << std::endl; 

    return 0; 
} 

출력은 해당 문자열로 초기화 할 일을

Hello Hi Blah Blah 
+0

왜 시작/끝 관용구 (대신 C++ - ish)가 아닌지 궁금합니다. – Nawaz

+0

@ Nawaz begin/end를 어디에서 사용할 것입니까? –

+0

'help (ptr, ptr + sizeof (ptr)/sizeof (* ptr)); ' – Nawaz

-2

이렇게하면됩니다.

char ptr[] = "Hello"; 
string str(ptr);