2012-07-25 2 views
0

내가 .OBJ 파일을로드 할 수있는 C++ OpenGL을 응용 프로그램을 작성하려고하고 내가 을 정점 읽는 코드를 사용C++ istringstream

char buf[256]; 
while(!objFile.eof()) 
{ 
    objFile.getline(buf,256); 
    coordinates.push_back(new std::string(buf)); 
} 

else if ((*coordinates[i])[0]=='v' && (*coordinates[i])[1]==' ') 
{ 
    float tmpx,tmpy,tmpz; 
    sscanf(coord[i]->c_str(),"v %f %f %f",&tmpx,&tmpy,&tmpz); 
    vertex.push_back(new coordinate(tmpx,tmpy,tmpz)); 
    cout << "v " << tmpx << " " << tmpy << " " << tmpz << endl; 
} 

그렇게 basicly 코드의 두 번째 파이스가에서 정점 라인을 구문 분석을 OBJ ++ 구문 내 질문에 내가 아래 코드는 C에서 무엇을 번역 할 istringstream 를 사용하여이 정점 선 C++ 스타일을 분석 할 수있는 방법입니다

v 1.457272 0.282729 -0.929271 

파일

sscanf(coord[i]->c_str(),"v %f %f %f",&tmpx,&tmpy,&tmpz); 
    vertex.push_back(new coordinate(tmpx,tmpy,tmpz)); 
+0

첨부 코드 sn에 'coord'가 선언되지 않았습니다. ippet. – timrau

답변

1

을 적용하는 데 사용

그냥 표준 입력에서 읽기처럼 작동
istringstream strm(*coord[i]); 
strm.ignore(2); 
strm >> tmpx >> tmpy >> tmpz; 
vertex.push_back(new coordinate(tmpx, tmpy, tmpz)); 
0

here을 참조하십시오. 이것은 좋은 예입니다. 첫 번째 두 문자가 쓸모 있는지 확인하는 경우 코드를

+0

jcatki.no-ip.org/fncpp/cplusplus.com –

1

:

istringstream parser(coord[i]); 
char tmp; 
parser >> tmp >> tmpx >> tmpy >> tmpz; 

(참고 : tmp은 줄의 시작 부분에 'v'를 넣기 만하면 무시할 수 있습니다 - 스트림을 초기화하기 전/끝내기 전에 /를 자르십시오)

관련 문제