나는 C++로 프로그램을 작성하기 위해 과제를 부여 받았지만 문자열 클래스는 사용할 수 없습니다. 그러나 문자열 스트림을 포함하여 iostream 라이브러리를 사용할 수 있습니다. 문자열을 사용하여 클래스를 빌드하고 함수에서 돌아 오는 문자열을 사용하려고 생각했습니다.문자열 대신 stringstream을 사용 하시겠습니까? - C++
이 소리가 좋은 생각 인가요? 내가 알아야 할 함정들?
나는 C++로 프로그램을 작성하기 위해 과제를 부여 받았지만 문자열 클래스는 사용할 수 없습니다. 그러나 문자열 스트림을 포함하여 iostream 라이브러리를 사용할 수 있습니다. 문자열을 사용하여 클래스를 빌드하고 함수에서 돌아 오는 문자열을 사용하려고 생각했습니다.문자열 대신 stringstream을 사용 하시겠습니까? - C++
이 소리가 좋은 생각 인가요? 내가 알아야 할 함정들?
< 문자 >을 사용할 수도 있습니다. 문자열 대신 사용할 수있는 좋은 방법입니다. 스콧 마이어스는 자신의 "효과적인 STL"책에서 말하기를 :
셋째, 벡터에게 < 문자 > 대신 문자열의 사용을 고려, 벡터 구현은 그렇게 멀티 스레딩 성능을 숨겨, 참조 카운트가 될 수 없습니다 문제가 발생하면 이 실패합니다. 당신이 스위치 < 문자 > 벡터에 경우 물론, 당신은 문자열의 화려한 멤버 함수를 포기하지만, 의 대부분이 기능을 사용하면이 정도로 은 누구 요-그다지 기능을 포기, 어쨌든 STL 알고리즘을 통해 볼 수 있습니다 다른 하나를 위해 구문을 거래하십시오.
stringstream을 사용할 때 발생할 수있는 주요 문제는 엄격하게 컨테이너가 아니라는 것입니다. 스트림으로 알고리즘 및 기타 일반 STL 항목을 사용할 수 있는지 확실하지 않습니다.
상황이 문자열없는 쇼핑 데이터베이스 인 경우 열거 형을 사용하면됩니다.
즉, 정수로 전달할 수 있고 그 다음에는 switch 문이있는 인쇄 기능 만 있으면됩니다.
void PrintProd(int product) {
switch(product) {
case Prod1:
cout << "Product 1" << endl;
break;
case Prod2:
cout << "Product 2" << endl;
break;
// etc.
}
}
이렇게하면 많은 문제를 피할 수 있습니다. 힙을 다루는 것에 신경 쓰지 않는다면, id가 벡터에 대한 인덱스 인 제품 이름을 할당하는 char * 벡터도 작동합니다.
문자열 스트림에서 물건을 가져 오는 유일한 방법은 문자열로 변환하는 것입니다. – workmad3
문자열 클래스를 사용할 수없는 이유가 무엇인지 모르기 때문에이 질문에 대답하기가 어렵습니다. 할당 대신에 문자열 대신 다른 표준 클래스를 사용하는 영리한 방법을 찾으려고 했습니까? 또는 자신 만의 문자열 클래스를 구현해야합니까? –
다형성에 관한 과제입니다. 우리는 제품 목록과 쇼핑 바구니를 저장하는 상점 데이터베이스를 구축하고 있습니다. 그들은 문자열 사용을 허용하지 않음으로써 인색 해합니다. 나는 우리가 char * 또는 char 배열을 저장하는 다른 방법을 사용하기를 기대한다고 생각한다. 그러나 우리는 다른 창의적인 솔루션을 자유롭게 찾아 낼 수 있습니다. – Meir