2個WCHAR賦值時的問題

2021-07-26 06:19:01 字數 552 閱讀 9672

寫了個函式,用於擷取位置x到位置y長度的字串 **如下

第乙個函式是輸入函式,第二個函式表示x的位置,第三個函式表示y的位置,第四個函式是輸出函式,即截獲的字串

uint ctimerdlg::substring(lpcwstr pstr, uint ubegin, uint uend, wchar *poutstr)

;int ilen = wcslen(pbuf);

wcscpy_s(poutstr, (uend-ubegin+2), pbuf);

return sserr_ok;

}問題就在lpwstr pbuf = new char[uend-ubegin+2]這行**上 比方說我要擷取的開始位置是第3位,結束位置為第8位,那我這裡給pbuf分配了[8-3+2]為7位,但是除錯執行時,系統自動為我分配了14位,我知道wchar 佔2個位元組 14位沒錯。但執行到wcscpy_s(poutstr, (uend-ubegin+2), pbuf);這裡就出錯了,我在除錯視窗可以看到pbuf的內容為"123456???????"(後面很多個「?」) 明顯多了「?」的位元組數。請問改怎麼解決?

變數賦值時的,多個變數連等的問題

如果有這麼一段 a b c 請問 上面的賦值語句的執行順序是 1 c 的值先賦值給 b,然後再將 b的值賦值給 a 2 c 的值先賦值給 b,然後再將 c賦值給 a 3 a 和 b 是指向同乙個變數,還是只是乙個副本 class a a b new a c new a var dump a obje...

乙個變數賦值的小問題

create table a a varchar 10 insert into a select a insert into a select a insert into a select b insert into a select b insert into a select c insert ...

Sqlite的2個問題

1.主鍵自增長問題 如果row id是表主鍵,如果ddl中設定了auto increment,insert row id的時候只要設定為null則可以讓主鍵從1開始自增長。但是如果這時候刪除以往的記錄後,問題出現了,新增的記錄主鍵值並不是從1開始的,而是從最後一條被刪除的主鍵值 1開始的,比如上次刪...