동적 크기의 구조체 배열을 만들고 각 구조체에 값을 할당하려고합니다. 저는 벡터를 사용하여이 문제를 쉽게 해결할 수 있다는 것을 알고 있지만, C ++의 토대와 그 핵심에서 실제로 작동하는 방식을 배우기위한 연습으로이 작업을 수행하고 있습니다.
이 경우 구조체는
struct car
{
std::string make;
int year;
};
그런 다음 main () 함수 내에 다음이 있습니다.
car* cars[catSize];
for (int i = 0; i < catSize; ++i)
{
cars[i] = new car
cout << "Enter the make for car " << i << ": ";
char ch;
string tempMake = "";
cin.get(ch);
while(ch != '\n')
{
tempMake += ch;
cin.get(ch);
}
cars[i]->make = tempMake;
cout << "Enter the year of car # " << i << ": ";
cin >> cars[i]->year;
}
위를 실행하면 make를 입력하고 Enter를 누른 직후에 분할 오류가 발생합니다. 누군가가 무슨 일이 일어나고 있는지 설명 할 수 있습니까?
배열 크기를 입력 한 후에 '\n'
는 입력 버퍼에 머무르고 추가 입력을 방해하는 것으로 보입니다 .
또한 모든 컴파일러에서 지원되지 않으므로 catSize
상수 를 가져야합니다 VLAs
.
그래도 VLA를 사용 cin.ignore();
하려면 어레이 크기를 읽은 후 추가해야합니다 .
또한 현재 질문에 명시된 것처럼 동적 구조체 배열이 아니라 structs에 대한 포인터 의 고정 배열 이라는 점에 유의해야 합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다