2013-12-09 3 views
0

내 코드를 읽어 보시기 바랍니다. 그것은 단지 안녕 제임스에서 읽었다. 내가 "어떻게 지내니?"라고 읽을 수있는 방법이 있습니까?의 getline은 첫 번째 행 (첫번째 줄)

+1

예,'getline'을 다시 호출하십시오. 이름에서 알 수 있듯이 한 번에 한 행을 읽고 파일에는 두 행이 있습니다. –

답변

2

std::getline()에 특정 문자를 읽을 수 있습니다. 문자가 스트림에 없다고 가정하면 스트림 전체를 읽습니다.

std::string mess; 
if (std::getline(std::cin, mess, '\0')) { 
    // ... 
} 
else { 
    std::cout << "ERROR: failed to read input\n"; 
} 

정확히 두 줄을 읽어해야하는 경우

, 당신 아마 "\n"을 중간에 두 번 std::getline()를 사용하고 결과를 결합하는 것이 가장 것입니다.

0

다른 방법으로 문제를 해결할 수 있는지 또는 전체 파일을 읽으려면 getline을 사용해야하는 제한 사항이 있는지 확실하지 않습니다. 그렇지 않은 경우 텍스트 파일의 내용을 메모리에 저장하여 더 잘 처리 할 수있는 멋진 방법을 찾았습니다.

ifstream ifs (filename, ios::in); 
if (!ifs.is_open()) { // couldn't read file.. probably want to handle it. 
    return; 
} 
string my_string((istreambuf_iterator<char>(ifs)), istreambuf_iterator<char>()); 
ifs.close(); 

이제 my_string 변수에 전체 파일이 있어야합니다.

0

당신은 다음의 쉽게 두 번 getline를 사용하여, 단지 그 두 라인을 읽고 싶다면 당신은 (here를 참조하십시오)

std::ifstream f (...); 

// get length of file: 
f.seekg (0, f.end); 
int length = f.tellg(); 
f.seekg (0, f.beg); 

char * buffer = new char [length]; 

// read data as a block: 
f.read (buffer,length); 

당신이 기능 read()를 사용할 수있는 전체 파일을 읽고 싶다면.