使用字串結構
傳統c語言總定義和使用字串:
ansi和unicode
ansi
unicode
char *str=; //ansi字串定義
wchar_t *wstr=; //unicode字串定義
//求長度
size_t len = strlen(str); //ansi
size_t wlen = wcslen(wstr); //unicode
printf("%s %ws %d %d",str,wstr,len,wlen);
1 字串定義
驅動中常用的字串結構
typedef struct _unicode_stringunicode_string,*punicode_string;
typedef struct _ansi_stringansi_string,*pansi_string;
對unicode_string的賦值:
unicode_string str=;
在標頭檔案ntdef.h中有乙個巨集rtl_constant_string,使用這個巨集後,我們就可以簡單的
定義乙個常數字串如下:
unicode_string str=rtl_constant_string(l"my first string");
unicode_string str;
rtlinitunicodestring(&str,l"my first string");
2 字串的拷貝
unicode_string dst;//目標字串
wchar dst_buf[256];
unicode_string src = rtl_constant_string(l"my source string!");
//分配緩衝區
rtlinitemptystring(dst,dst_buf,256*sizeof(wchar)); //
rtlcopyunicodestring(&dst,&src); //字串拷貝
3 字串的連線
ntstatus status;
unicode_string dst; //目標字串
wchar dst_buf[256];//定義緩衝區
unicode_string src = rtl_constant_string(l"my source string!");//定義
//初始化目標字串
rtlinitemptystring(dst,dst_buf,256*sizeof(wchar));
rtlcopyunicodestring(&dst,&src); //字串拷貝
4 字串的列印
1)字串和數字的集合
sprintf(),swprintf()不安全.微軟推薦rtlstringcbprintw
// 呼叫rtlstringcbprintfw來進行列印
status = rtlstringcbprintfw(
dst->buffer,l」file path = %wz file size = %d \r\n」,
&file_path,file_size);
// 這裡呼叫wcslen沒問題,這是因為rtlstringcbprintfw列印的
// 字串是以空結束的。
dst->length = wcslen(dst->buffer) * sizeof(wchar);
2)輸出列印
dbgprint() 列印除錯資訊
python基礎 第一章 字串(二)
print str 結果 runoob print str 0 1 結果 runoob print str 0 結果 r print str 2 5 結果 noo print str 2 結果 noob print str 2 結果 runoobrunoob print str test 結果 ru...
程式設計藝術之第一章 左轉字串
題目描述 字串的左轉操作 將字串前面的若干個字元移動到字串的尾部。例如 把字串abcdef 左旋轉2位得到字串cdefab。要求 要求對字串實現左旋轉操作,並且對長度為n的字串操作的時間複雜度為o n 空間複雜度為o 1 方法一 我們可以講字串的左轉想成如下過程 假設左轉1個字元 1 先把第乙個字元...
Scala程式設計實戰 第一章 字串 1
scala val s1 hello s1 string hello scala val s1 hello s1 string hello scala val s2 hello s2 string hello scala val s3 h ello s3 string hello scala s1 ...