2013-09-11 2 views
0

std :: vector의 생성자 사용에 관한 질문이므로 RapidXML 규칙에 대한 구체적인 질문은 많지 않습니다.std :: string의 데이터 유형 사용 : std :: vector의 생성자

vector<char> buffer((istreambuf_iterator<char>(theFile)), istreambuf_iterator<char>()); 

이 이유가 있어야합니다 : 나는 RapidXML을 사용하여 다른 사람의 발견 한 모든 예에서

는 모든 사람이 항상 같은 생성자 char '상기 std::vector 사용의'를의 벡터로 데이터를 읽고 내가 std::string 's의 벡터로 변경하려고 할 때이 첫 번째 오류 인 상태 오류의 화면 전체 얻을 수 있기 때문에 :

error: invalid conversion from ‘void*’ to ‘std::istreambuf_iterator<std::basic_string<char> >::streambuf_type* {aka std::basic_streambuf<std::basic_string<char>, std::char_traits<std::basic_string<char> > >*}’ 

는 표준 : : 문자열을 사용하는 방법이 그렇지 않은 경우 그 이유는 무엇입니까?

답변

1

무엇을하려하십니까?

파일의 내용을 단일 문자열로 원 하시겠습니까? 그렇다면

string buffer((istreambuf_iterator<char>(theFile)), istreambuf_iterator<char>()); 

해야합니다. 이 파일에서 한 줄을 포함하는 각 문자열 문자열의 벡터를 원하는 경우

한편

, 당신은이 (테스트되지 않은 코드)와 같은 루프를 작성해야합니다 :

vector <string> lines; 
for (string aLine; std::getline(theFile, aLine) ;) 
    lines.push_back(aLine); 
+0

오 , 내가 참조! 'istreambuf_iterator()'는 문자를 읽고'char' 타입이어야합니다. 나는'std : string'으로 항목을 읽으면 더 쉽게 비교할 수있을 것이라고 생각했습니다. 예를 들어'if (column_node-> value(). compare ("코일 및 스위치 저항") == 0)'. – larrylampco

+0

짧은 :'문자열 버퍼 (istreambuf_iterator (theFile), {});' – sehe

관련 문제