動中字串的操作

2021-04-29 23:21:59 字數 4236 閱讀 9749

[核心/驅動] 驅動中字串的操作

//如果本文有不對的地方,望即時指點!

字串的初始化

定義乙個unicode_string型別的變數,這只是乙個空的結構體而已,我們並沒有給它分配任何的記憶體。如果直接對其進行字串拷貝等操作,肯定會引起異常的,當我們定義這樣型別的乙個變數,我們應該就把它看作乙個wchar型的指標,沒有「new」空間,所以我們必須去「new」空間給它。

typedef struct

unicode_string, *punicode_string;

有以下幾種方式:

1.rtlinitemptyunicodestring

unicode_string str;

wchar wcsbuffer[1024] = ;

rtlemptyunicodestring(&str, wcsbuffer, sizeof(wcsbuffer));

這種方式就像定義乙個靜態的串 wchar wcsbuffer[1024] = 。

2.動態申請空間

unicode_string str;

str.buffer = (pwchar)exallocatepoolwithtag(nonpagepool, 1024, 『1234』);

str.length = 0;

str.maximumlength = 1024;

這種方式就像定義乙個wchar* pwcsbuffer = new wchar[1024];

使用完之後,必須釋放記憶體。

exfreepool或者是exfreepoolwithtag。

3.定義常量unicode_string

可以使用巨集rtl_constant_string

unicode_string str = rtl_constant_string(l」my first string」);

記住這個字串不能再被修改,因為這就像定義了char *str = 「123」; 該字串不能再被修改。

字串的拷貝

rtlcopyunicodestring(&dst, &src);

字串的連線

驅動中使用的字串操作函式,這裡給出ansi和unicode的對比

操作

ansi串函式

unicode串函式

length

strlen

wcslen

concatenate

strcat

strncat

wcscat

wcsncat

copy

strcpy

strncpy

rtlcopystring

wcscpy

wcsncpy

trlcopyunicodestring

reverse

_strrev

_wcsrev

compare

strcmp

strncmp

_stricmp

_strnicmp

rtlcomparestring

rtlequalstring

wcscmp

wcsncmp

_wcsicmp

_wcsnicmp

rtlcompareunicodestring

rtlequalunicodestring

rtlprefixunicodestring

initialize

_strset

_strnset

rtlinitansistring

rtlinitstring

_wcsnset

rtlinitunicodestring

search

strchr

strrchr

strspn

strstr

wcschr

wcsrchr

wcsspn

wcsstr

upper/lowercase

_strlwr

_strupr

rtlupperstring,

_wcslwr

_wcsupr

rtlupcaseunicodestring

character

isdigit

islower

isprint

isspace

isupper

isxdigit

tolower

toupper

rtlupperchar

towolower

towupper

rtlupcaseunicodestring

format

sprintf

vsprintf

_snprintf

_vsnprintf

swprintf

_snwprintf

string conversion

atoi

atoll

_itoa

_itow

rtlintegertounicodestring

rtlunicodestringtointeger

type conversion

rtlansistringtounicodestring

rtlansistringtounicodestring

rtlunicodestringtoansistring

memory release

rtlfreeansistring

rtlfreeunicodestring

lisp中的字串和字串操作

lisp使用雙引號表示字串字面量 cl user abc abc 如果要包含雙引號用 轉義 cl user a bc a bc 如果包含 本身,也需要 轉義 cl user a bc a bc 插入變數 第三方cl interpol包可以把乙個變數的值插入字串中 1.安裝 ql quickload ...

LoadRunner中字串的操作

loadrunner中常用的字串操作函式有 strcpy destination string,source string atoi string to convert to int returns the integer value itoa integer to conver to string...

python 中的字串操作

s.strip lstrip rstrip strcpy sstr1,sstr2 sstr1 strcpy sstr2 sstr1 sstr1 strcpy2 print sstr2 strcat sstr1,sstr2 sstr1 strcat sstr2 sstr1 sstr2 print ss...