2012-04-12 5 views
0

그래서 사용자로부터 입력을 받고 2 개의 개별 데이터 형식으로 저장하는 가장 좋은 방법을 이해하는 데 약간의 도움이 필요합니다. 내가 뭘 원하는 입력 예를 취할 수 있습니다 :getline을 사용하여 사용자 입력을 구문 분석하는 가장 좋은 방법은 무엇입니까?

remove 44 

내가 첫 번째 부분은 "제거"내가 호출 할 필요가 기능을 알 수있는 문자열로 저장 먹고 싶어,하지만 그때 먹고 싶어 44는 상기 함수로의 입력이되도록 int로 저장합니다. 지금까지 내가 무엇을

string In; 
getline (cin, In); 

가 지금은 두 개의 문자열을 얻을 수있는 공간을 구분하는 한, getline을 변경해야하는 경우 그래서 그 일에 대해 갈 것이라고 또는 그냥 전체 입력을 받아 2 문자열을 생성하는 방법 그것?

나는 이것이 매우 간단한 문제라는 것을 알고 있지만 C++의 사용자 입력 작업에 많은 경험이 없다. 어떤 도움이라도 대단히 감사하겠습니다.

+1

스트림 운영자에 익숙합니까? 'cin >> 에서처럼; cin >> n;'? – Beta

+0

나는 광범위하게 사용하지는 않았다. 나는 getline이 더 나은 연습으로 여겨졌다는 인상 아래에 있었다. 더 좋은 방법이 있다면 나는 그걸 열어 줄 것이다. – triple07

답변

1

당신은 >> 그럼 나중에

SomeStruct test; 
cin >> test; 

운영자에 대한 자세한 내용은

struct SomeStruct 
{ 
    string id; 
    int data; 
}; 

istream & operator>>(istream& is, SomeStruct& someData) 
{ 
    is >> (string&)someData.id; 
    is >> someData.data; 

    return is; 
} 

을 수행하여이 작업을 수행 할 수있는 연산자를 >> 오버로드 할 수 istream::operator>>를보십시오.

연산자 오버로딩에 대한 자세한 내용은 C++ Operator Overloading Guidelines을 참조하십시오.

+0

흠. 흥미로운 솔루션이지만, 클래스의 작은 코딩 예제를위한 것보다 조금 더 간단한 것을 찾고 있었지만 다음에 사용자 입력을 처리 할 때이 점을 명심해야합니다. 감사. – triple07

+0

음 "In"값을 구해서 파싱 할 수는 있지만 "해킹"에 더 가까울뿐 아니라 아마 이것만큼 많은 코드가 될 것입니다. 명시 적으로 getline을 사용하라는 지시가없는 한이 방법을 제안합니다. 과거에 프로그래밍 질문을 한 사람 (수업 및 인터뷰를 통해)으로서, 나는 이것을 좀 더 엄격한 것보다는 응답으로보고 싶습니다. – josephthomas

+0

좋아,이 시도해 보겠습니다. 내 Main.cpp에서 이것을 사용할 수 있습니까? – triple07

관련 문제