2017-10-04 4 views
-4

매우 긴 문자열을 편집하기 위해 스캐닝 시스템에서 작업 중입니다. 스캔의 경우 현재 문자열을 검사하기 위해 문자열을 사용하고 있습니다. char[] 배열의 길이를 string 변수의 길이로 설정해야하지만, 내 길이 변수는 const으로 선언 되어도 상수로 간주되지 않습니다.변수를 사용하여 배열 길이 설정

string inputScan; 
cout << "Enter string." << endl; 
getline(cin, inputScan); 
const int stringLength = inputScan.length(); 
char scanSet[stringLength]; 

수정 사항?

+2

'std :: vector'를 사용하십시오. – user4581301

+4

이것은 배열의 차원을 지정하는 데 필요한 컴파일 타임 상수가 아닙니다. 또한 문자열을 이미 읽은 경우 다른 배열이 필요한 이유는 무엇입니까? –

+0

컴파일 타임 상수 여야합니다. 대신 std :: string을 사용해보십시오. http://en.cppreference.com/w/cpp/string/basic_string –

답변

0

컴파일러는 일 때 고정 길이 배열 크기를 으로 지정해야합니다. 따라서 컴파일러는 스택에 (또는 어디에서든지) 공간을 할당 할 수 있습니다. 따라서 귀하의 접근 방식은 작동하지 않습니다.

std::vector과 같은 C++ 표준을 사용하면 아무런 문제가 없습니다.

+0

정말 말할 필요가 없기 때문에 "스택에"놓을 수는 있지만 스택이 없을 수도 있습니다. – user4581301

+0

또한 정적으로 할당 될 수도 있습니다. –

+1

또는'char scanSet []'을'std :: string scanSet'으로 바꾸거나'scanSet'을 완전히 제거하고'inputScan'을 직접 스캔하십시오. –