2013-11-09 46 views
1

因此,我將字符串轉換爲C++中的字節,但是當它將它添加到註冊表中時,它將剝離exe部分但保留了。,我不知道它有什麼問題。C++字符串到字節錯誤

如果你想知道NXS是什麼,它的價值是「noerrorsplease.exe」,類型是char。

char szFinal[] = ""; 
strcat(szFinal, (const char *)ExtractDirectory(filepath).c_str()); 
//Not needed: strcat(szFinal, ""); 
strcat(szFinal, nxs); 
strcat(szFinal, ".exe"); 

     CString str; 
     str = szFinal; 
     str += ".exe"; 
     cout << str.GetString() << endl; 
     const BYTE* pb = reinterpret_cast<const BYTE*>(str.GetString()); 
     cout << pb << endl; 
     DWORD pathLenInBytes = *szFinal * sizeof(*szFinal); 
     if(RegSetValueEx(newValue, TEXT("Printing Device"), 0, REG_SZ, (LPBYTE)pb, pathLenInBytes) != ERROR_SUCCESS) 
     { 
      RegCloseKey(newValue); 
      cout << "error" << endl; 
     } 
     cout << "Possibly worked." << endl; 
     RegCloseKey(newValue); 
+0

哦,我修正了我自己的錯誤,呵呵。它正盯着我的臉!大聲笑 – user2948772

+0

不得不將代碼替換爲dword pathleninbytes:DWORD pathLenInBytes = * str * sizeof(* str); – user2948772

回答

2

此代碼

char szFinal[] = ""; 
strcat(szFinal, (const char *)ExtractDirectory(filepath).c_str()); 

已經是無效的。您定義的數組szFina只有一個字符是終止零。你不能用它來拷貝任何字符串。在這些情況下,您應該使用std :: string類型的對象。

+0

+1有* *可以連接的字符串,但它很枯燥('「」')。無論如何,這仍然是一個嚴重的問題,應該加以解決。 – WhozCraig

+0

是的,我發佈後差不多10分鐘就發現自己的錯誤。 – user2948772