초보자 용 질문처럼 들리지만 저는 char *로 C++로 일한 적이 없습니다. 나는 항상 문자열을 사용했다. 그러나 Ubuntu 13.10
과 NVidia
OpenGL
드라이버가있는 버그가 있으므로 char *를 사용해야합니다. Here이 버그입니다.Const Char를 Char * C++에 덧붙임
나는 생성자에서 const char* folderName
을 취한 다음이 폴더에있는 모든 .glsl
파일을 컴파일하는 클래스가 있습니다. 나는 strcpy
과 strcat
을 시도했으며 둘 다 너무 겹쳐 보입니다.
glProgram *p = new glProgram("phong\n");
glProgram :: glProgram(const char* folderName)
{
cout << folderName << endl;
char* name = strdup(folderName);
cout << name << endl;
name = strcat(name,"/vertex.glsl");
cout << name << endl;
}
그러나 예상대로 출력되지 않습니다.
phong
phong
/vertex.glsl
는 어떻게 얻을 수 출력이 될 phong/vertex.glsl
?
새 문자열을 할당하는 데 'strdup'을 사용하지 않아야합니다. 더 큰 결과를 저장할 정도로 크지 않습니다. 그 외에는 당신의 결과를 설명 할 수 없습니다. –
폴더 이름에 줄 바꿈 문자가 있습니다. 당신은 그들이 왜 연결되어 있지 않다고 생각하지 않는 것이 틀림 없는가? 또한 폴더 이름을 복사하기 위해'strdup'를 사용했고 폴더 이름과 파일 이름을 연결하기 위해'strcat'를 사용했습니다. 그렇게하면 연결을위한'name'에 충분한 공간이 있음을 보장 할 수있는 방법이 없습니다. –
당신은'const char * a = "one"을 의미합니다; const char * b = "two"; size_t len1 = strlen (a); size_t len2 = strlen (b); char * buff = new char [len1 + len2 + 1]; strcpy (buff, a); strcat (buff, b);'? 또한 할당 된 공간을 삭제하는 것을 잊지 마십시오. – PeterT