2017-01-08 8 views
0

빈 줄에 도달 할 때까지 표준 입력 (cin)을 사용하여 입력을 읽으려고합니다. 나는 여러 번 시도했지만 여전히 그것을 달성하지 못했습니다. 누구든지 나를 도울 수 있습니까?빈 줄에 도달 할 때까지 cin을 사용하여 계속 읽는 방법

다음은 입력 형식입니다. 참고 :
1. //는 의견
입니다. 2. 입력 내용의 두 번째 줄 뒤에 주석을 무작위로 배부 할 수 있습니다. 그래서 나는 또한 그 의견을 분명히 할 필요가있다. 그것을하는 방법을 모르십시오.
3. 첫 번째 줄은 단일 문자 여야합니다.
4. 두 번째 줄은 정수 여야합니다.

A는      
8      
좋은
놀라운
멋진

은 훌륭한
다음은

은 다음의 어떤 ​​임의의 의견
화려한
천재
유래 대단한된다 // 환상적인
내가 지금 가지고있는 것. 나는 getline을 사용하려하지만 프로그램은 처음 두 줄 (문자와 숫자)을 읽는다. 그런 다음 프로그램이 종료됩니다. 확실하지 무슨 일을하려고 :

void read() {  
    vector<string> my_vec; 
    char my_letter; 
    cin >> my_letter; 

    int my_num 
    cin >> my_num; 

    string current_word; 
    while (getline(cin, current_word)) { 
    if (current_word.empty()) { 
     break; 
    } 
    if (current_word[0] != '/') { 
     my_vec.push_back(current_word); 
    } 
    } 
} 
+0

"작동하지 않음"은 무엇을 의미합니까? 문제를 더 자세히 설명하십시오. –

+0

죄송합니다. 문제가있는 게시물을 편집했습니다. –

답변

1

다음 getline 전화가 빈 줄을 추출하므로 추출 cin >> my_num;가 공백 인 줄 바꿈 (추출하지 않고이 문제를 해결하기 위해

대체 방법을 :.

  1. 항상 라인 기반의 문자열을 추출 및 하위 문자열 스트림을 사용합니다.

  2. std::cin >> my_num >> std::ws을 사용하면 공백을 실수로 나타낼 수 있습니다.

  3. std::cin.ignore(1, '\n')을 사용하면 하나의 개행을 중얼 거칠 수 있습니다.

  4. 더미 std::getline(std::cin, current_word) 전화를 사용하여 하나의 개행을 중얼 거림.

+0

그것은 작동합니다! 정말 고맙습니다!! –