첫 번째 부분에서 사용자에게 문자열 입력을 요구하는 지정 작업을 수행하고 있습니다. 이 입력을 힙에 cstring으로 저장해야합니다 (std :: string이 아닌 cstring을 더 잘 이해할 수 있도록). 나는 잘 작동 뭔가 가지고있다 :Cstring으로 C++ 스토어 문자열 입력
char *input = new char[500];
cout << "enter a string: ";
cin.getline(input, 500);
을하지만 난이 (500)의 배열을 생성하고이 문자 제한을 초과하지 않는 희망에 관해서는 그것을 할 수있는 아주 좋은 방법이 아닌 것 같은 느낌. 말도 안되게 큰 배열을 만들지 않고 이렇게 할 수있는 방법이 있습니까? 이것은 그것에 대해가는 아마추어적인 방법으로 보인다. std :: string 사용할 수 있다고 생각하지만 cstring 사용해야합니다 : (
당신이 '돈 힙이가해야 공간의 어떤 양을 알 방법 다음 크기를 지정하는 경우와 그 배열에 배열과 포인트를 찍어서 캐릭터? 여기에 500자를위한 공간을 할당하고이 공간이 다른 앱에 의해 인계받지 않도록하십시오. –
'std :: string' 방법은 작은 버퍼를 할당 한 다음 다시 채우고 복사하면 다시 채울 수 있으며 더 이상 읽을 문자가 없을 때까지 여러 번 반복하여 다시 할당 할 수 있습니다. 이런 방식으로 구현할 수도 있지만 문제가되지는 않습니다. 오늘날에는 500 바이트가별로 공간이 없습니다. – Brian
'std :: string'은 자동으로 크기가 맞으므로 분명히 사용하기가 훨씬 쉽습니다. 일반적으로 여러분이 한 방식은 입력의 크기에 대해 충분히 알지 못해도 더 정확하게 수행 할 수있는 방법입니다. 전체 공간을 절약하려면 버퍼를 채운 다음 크기를 찾고 그 크기의 다른 배열을 만들고 해당 배열에 버퍼를 복사 한 다음 버퍼를 할당 해제합니다. – IllusiveBrian