2013-08-14 5 views
0

내 응용 프로그램이 0x3을 반환하고 충돌합니다. fstream이 파일을 열 수 없다는 것을 발견했습니다. 그것이 있어야하는 곳? 내 말은, application.exe 같은 폴더 또는 다른 곳에 있습니까? 나는 코드 : 블록을 사용하고ifstream 및 fstream 파일을 넣을 위치

편집

코드 :: 블록

GLuint sh; 
int meret; 
char * s; 
std::ifstream fa1 ("vertex.vert",std::ios_base::binary); 

fa1.seekg(0, fa1.end); 
meret = fa1.tellg(); 
fa1.seekg(0, fa1.beg); 
fa1.read(s,meret); 
fa1.close(); 
//sh = glCreateShader(st); 
const char * s1[1] = {s}; 
std::cout << s; 
+0

작업 디렉토리에 있어야합니다. 그러나 상대 경로에 의존하지 말고 전체 경로를 사용 하시겠습니까? – stijn

+0

하지만 응용 프로그램을 옮기거나 다른 사람에게 줄 경우? – SPL

+0

그런 다음 적절한 방법은 파일의 위치를 ​​구성하는 방법을 추가하는 것입니다. 적게 다재다능한 방법은 당신의 exe와 동일한 전화 번호부에있는 파일을두고, 당신의 부호에서 당신의 exe가 인 경로를 파악하고, 그 때 파일의 경로를 산출한다. – stijn

답변

0

내가 당신의 문제가이 라인이다 생각 CB 러너와 함께 작업 디렉토리를 설정하는 것입니다 :

fa1.read(s,meret); 

배열 s에 대한 공간을 할당하지 않았으므로 쓰기를 시도하는 것이 좋지 않습니다. -이 전환 될 때 닫힙니다 수동으로 ifstream 개체를 종료 할 필요가 없습니다 다음 read만큼 파일이 너무 커서 ... NB가 아니므로, 문제가 해결 될 수 직전

s = new char[ meret ]; 

범위를 벗어났습니다.

+0

게시하기 전에 시도해보십시오! 나는 새로운 문자가 아닌 char만을 사용한다. 이제 작동합니다! SteveL, Kilian Rosbach 감사합니다! – SPL