字串操作

2021-07-24 17:57:02 字數 2466 閱讀 4905

3.1.2 字串的初始化

unicode_string只含有乙個指標,並沒有字串緩衝空間,下面的用法把str.buffer傳遞給wcscpy作為目標緩衝區,會引發空指標異常

//把str變數清空

unicode_string str = ;

//試圖把字串拷貝到新定義的字串結構裡面

wcscpy(str.buffer,l"my first string!");

初始化unicode_string變數的正確例子

1.正確的做法是為str.buffer指定緩衝區,例如

unicode_string str = {0};

wchar strbuf[128] = ;

str.buffer = strbuf;

wcscpy(str.buffer,l"my first dstring!");

str.length = str.maxinumlength = wcslen(l"my first string")*sizeof(wchar);

2.這個下面的方法也是對的

unicode_string str;

str.buffer = l"my first string !";

str.length = str.maxinumlength = wcslen(l"my first string")*sizeof(wchar);

3.用rtl函式初始化超級簡單

unicode_string str = ;

rtlinitunicodestring(&str,l"my first string!");

3.1.2 字串的拷貝

//目標字串

unicode_string dst;

//定義緩衝區(暫時先不分配記憶體)

wchar dst_buf[256];

//這是個初始化常數字串常用的巨集

unicode_string src = rtl_constant_string(l"my source string!");

//把目標字串初始化為擁有緩衝區長度為256的unicode_string空串(新書上寫錯了,寫成長度為0了,老書天書夜讀上面是對的

)rtlinitemptyunicodestring(&dst,dst_buf,256*sizeof(wchar));

//拷貝字串

rtlcopyunicodestring(&sat,&src);

3.1.3 字串的連線

ntstatus status;

//目標字串

unicode_string dst;

//定義緩衝區(暫時先不分配記憶體)

wchar dst_buf[256];

//這是個初始化常數字串常用的巨集

unicode_string src = rtl_constant_string(l"my source string!");

//把目標字串初始化為擁有緩衝區長度為256的unicode_string空串(新書上寫錯了,寫成長度為0了,老書天書夜讀上面是對的

)rtlinitemptyunicodestring(&dst,dst_buf,256*sizeof(wchar));

//拷貝字串

rtlcopyunicodestring(&sat,&src);

&dst,l"my second string!");

3.1.3 字串的列印

//生成包含檔案大小和路徑的字串

#include

//檔案路徑長度不設限,應該動態分配記憶體,還不會分配記憶體,暫時用把記憶體空間定義在區域性變數的方式代替

wchar dst_buf[512] = ;

unicode_string dst;

ntstatus status;

unicode_string file_path=rtl_constant_string(l"\\??\\c:\\winddk\\7600.16385.1\\inc\\cifs.h");

ushort file_size=1024;

//初始化乙個空字串,緩衝區長度為*sizeof(wchar)

rtlinitemptyunicodestring(&dst,dst_buf,521*sizeof());

//呼叫rtlstringcbprintfw列印

status = rtlstringcbprintfw(dst.buffer,512*sizeof(wchar),l"file path = %wz file size = %d \r\n",&file_pathe,file_size);

dst.length = wcslen(dst.buffer)*sizeof(wchar);

字串操作 靠字串分割字串

字串分解函式。注意strtok比較複雜。要妥善運用!也可以不用strtok函式,但要實現字串靠字串分割比較困難!注意str指向的空間必須是可讀可寫的 如陣列或動態分配的空間 不能為字串常量的指標,因為strtok改變了其中的內容。include include 功能 將str中的字串按照elemon...

字串操作

字串操作 要了解字串操作首先要了解什麼是字串。前面已經提過,字串是乙個由零個或者多個字元組成的有限序列,既然是有限的那麼也就意味著字串存在乙個起始位置和乙個結束位置。我們以指定起始位置的方式來通知程式從該位置起向後的一段記憶體空間的內容應該解釋為字串。那麼這個字串在什麼地方結束呢?規定當遇到字元 0...

字串操作

include using namespace std int strlength char str char strcopy char str1,char str2 char strlink char str1,char str2 int main char strcopy char str1,c...