我知道這聽起來像是一個初學者問題,但我從未在C++中使用過char *。我總是使用字符串。但是有一個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(淺黃色,一個); strcat的(淺黃色,B);'?另外,不要忘記刪除分配的空間。 – PeterT