2017-01-28 1 views
1

조사 중이지만 많은 정보를 찾지 못했습니다. 이제 파일의 요소를 목록에 넣는 방법과 목록을 인쇄하는 방법에 대해 혼란스러워합니다.파일 요소를 목록에 넣을 수있는 방법은 무엇입니까?

std::string line; 
std::list<string> l; 

//read first file 
ifstream myfile("Dataset.1.02.txt"); 
if (myfile.is_open()) { 
    getline(myfile, line); 
    while (getline(myfile, line) /**/) { 
     l.push_back(line); 
    } 
    myfile.close(); 
} 

for (auto v : l) { 
    std::cout << v << "\n"; 
} 
+0

'getline (myfile, line)/** /) {'앞의'getline (myfile, line);'을 제거하면 코드가 정상적으로 보입니다. – drescherjm

+0

문제가있는 경우 텍스트 파일을 넣은 폴더가 올바르지 않습니다. – drescherjm

+1

'std :: copy()'와'std :: istream_iterator' 및'std :: back_inserter'를 사용하여 루프를 완전히 제거하는 것을 고려하십시오. 예를 들면 : [C++에서 문자열 배열을 읽으려면 어떻게해야합니까? ] (http://stackoverflow.com/a/38602530/65863). –

답변

3

대부분 옳습니다. 당신은 다음과 같이 당신의 루프를 재 배열해야합니다

if
std::string line; 
std::list<std::string> l; 

//read first file 
std::ifstream myfile ("Dataset.1.02.txt"); 
if (myfile.is_open()){ 
    if (getline(myfile, line)) { 
     do { 
      l.push_back(line); 
     } while(getline(myfile, line)); 
    } 
    myfile.close(); 
} 

for (auto v : l){ 
    std::cout << v << "\n"; 
} 

파일이 비어있는 경우를 처리합니다. 그런 다음, 일단 우리가 줄을 가지고 있으면, 줄에 줄을 써서 다음 줄을 읽으려고합니다. 우리가 한 줄을 읽지 못하면 끝납니다.

+0

감사합니다!, 지금 내 프로그램이 맞습니다 –

+0

다행입니다! 문제가 해결되면 왼쪽의 체크 표시를 확인하십시오. – user1118321

관련 문제