欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C/C++中關(guān)于字符串的常見函數(shù)操作大全

 更新時間:2023年03月22日 09:30:07   作者:Star_ID  
這篇文章主要介紹了C/C++中關(guān)于字符串的常見函數(shù)操作,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

wcsncpy_s

wcsncpy_s:將一個寬字符串的字符復(fù)制到另一個寬字符串。定義在頭文件<wchar.h>

errno_t wcsncpy_s(
   wchar_t *strDest,
   size_t numberOfElements,
   const wchar_t *strSource,
   size_t count
);
參數(shù)說明
strDest目標(biāo)字符串
numberOfElements目標(biāo)字符串的大?。ㄒ宰址麨閱挝唬?/td>
strSource資源字符串
count要復(fù)制的字符數(shù)

示例

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main(void)
{
    const wchar_t src[] = L"南京";
    wchar_t dest[6] = { L'北', L'京', L'上', L'海', L'深' };

    wcsncpy_s(dest, 3, src, 3);

    puts("The contents of dest are: ");
    setlocale(LC_ALL, "en_US.utf8");

    const long dest_size = sizeof dest / sizeof * dest; // dest_size = 6

    for (wchar_t* p = dest; p - dest != dest_size; ++p) {
        if (*p)
            printf("%lc ", *p);
        else
            printf("\\0 ");
    }
}

結(jié)果

The contents of dest are:
南 京 \0 海 深 \0

swprintf_s

swprintf_s:將設(shè)置格式的數(shù)據(jù)寫入字符串。定義在頭文件<stdio.h> 或 <wchar.h>

int swprintf_s(
   wchar_t *buffer,
   size_t sizeOfBuffer,
   const wchar_t *format,
   ...
);
參數(shù)說明
buffer輸出的存儲位置
sizeOfBuffer可存儲的最多字符數(shù)
format格式控件字符串
要設(shè)置格式的可選參數(shù)

示例

#include <stdio.h>

int main(void)
{
	char  buffer[200], s[] = "computer", c = 'l';
	int   i = 35, j;
	float fp = 1.7320534f;

	// Format and print various data:
	j = sprintf_s(buffer, 200, "String:%s\n", s);
	j += sprintf_s(buffer + j, 200 - j, "Character:%c\n", c);
	j += sprintf_s(buffer + j, 200 - j, "Integer:%d\n", i);
	j += sprintf_s(buffer + j, 200 - j, "Real:%f\n", fp);

	printf_s("Output:\n%s\ncharacter count = %d\n", buffer, j);
}

輸出

Output:
String:computer
Character:l
Integer:35
Real:1.732053

character count = 53

memset

memset:將 ptr 指向的內(nèi)存塊的前 num 字節(jié)設(shè)置為指定值(解釋為無符號字符)。定義在頭文件string.h

void * memset ( void * ptr, int value, size_t num );
參數(shù)說明
ptr指向要填充的內(nèi)存塊的指針
value要設(shè)置的值。 該值作為 int 傳遞,但該函數(shù)使用該值的無符號字符轉(zhuǎn)換填充內(nèi)存塊。
num要設(shè)置為值的字節(jié)數(shù)。size_t 是無符號整數(shù)類型。

示例

/* memset example */
#include <stdio.h>
#include <string.h>

int main()
{
	char str[] = "almost every programmer should know memset!";
	memset(str, '-', 5);
	puts(str);
	return 0;
}

輸出

-----t every programmer should know memset!

memcmp

memcmp:將 ptr1 指向的內(nèi)存塊的前 num 字節(jié)與 ptr2 指向的前 num 字節(jié)進(jìn)行比較,如果它們都匹配則返回零,否則返回一個不同于零的值,表示如果它們不匹配則哪個更大。定義在string.h中。

請注意,與 strcmp 不同,該函數(shù)在找到空字符后不會停止比較。

int memcmp ( const void * ptr1, const void * ptr2, size_t num );
參數(shù)說明
ptr1內(nèi)存塊的指針
ptr2內(nèi)存塊的指針
num比較的字節(jié)數(shù)
返回值說明
<0兩個內(nèi)存塊中不匹配的第一個字節(jié)在 ptr1 中的值小于 ptr2 中的值(如果評估為 unsigned char 值)
>0兩個內(nèi)存塊中不匹配的第一個字節(jié)在 ptr1 中的值大于在 ptr2 中的值(如果評估為 unsigned char 值)
=0兩個內(nèi)存塊的內(nèi)容相等
/* memcmp example */
#include <stdio.h>
#include <string.h>

int main()
{
	char buffer1[] = "DWgaOtP12df0";
	char buffer2[] = "DWGAOTP12DF0";

	int n;

	n = memcmp(buffer1, buffer2, sizeof(buffer1));

	if (n > 0) printf("'%s' is greater than '%s'.\n", buffer1, buffer2);
	else if (n < 0) printf("'%s' is less than '%s'.\n", buffer1, buffer2);
	else printf("'%s' is the same as '%s'.\n", buffer1, buffer2);

	return 0;
}

輸出

'DWgaOtP12df0' is greater than 'DWGAOTP12DF0'.

memcpy

memcpy:將 num 個字節(jié)的值從 source 指向的位置直接復(fù)制到 destination 指向的內(nèi)存塊。

void * memcpy ( void * destination, const void * source, size_t num );

示例

/* memcpy example */
#include <stdio.h>
#include <string.h>

struct {
  char name[40];
  int age;
} person, person_copy;

int main ()
{
  char myname[] = "Pierre de Fermat";

  /* using memcpy to copy string: */
  memcpy ( person.name, myname, strlen(myname)+1 );
  person.age = 46;

  /* using memcpy to copy structure: */
  memcpy ( &person_copy, &person, sizeof(person) );

  printf ("person_copy: %s, %d \n", person_copy.name, person_copy.age );

  return 0;
}
 Edit & Run

輸出

person_copy: Pierre de Fermat, 46

wcslen

wcslen:返回C寬字符串的長度

size_t wcslen (const wchar_t* wcs);

示例

/* wcslen example */
#include <stdio.h>
#include <wchar.h>

int main()
{
	wchar_t wsInput[256];
	wprintf(L"Enter a sentence: ");
	fgetws(wsInput, 256, stdin);  /* includes newline characters */
	wprintf(L"You entered %u characters.\n", wcslen(wsInput));
	return 0;
}

輸出

Enter a sentence: 南京
You entered 5 characters.

LoadStringW

LoadStringW不是C/C++中標(biāo)準(zhǔn)庫函數(shù),而是windows的一個接口。定義在libloaderapi.h頭文件中。從與指定模塊關(guān)聯(lián)的可執(zhí)行文件中加載字符串資源,并將該字符串復(fù)制到具有終止 null 字符的緩沖區(qū)中,或者返回指向字符串資源本身的只讀指針。

int LoadStringW(
  [in, optional] HINSTANCE hInstance,
  [in]           UINT      uID,
  [out]          LPWSTR    lpBuffer,
  [in]           int       cchBufferMax
);
參數(shù)說明
hInstance其可執(zhí)行文件包含字符串資源的模塊實(shí)例的句柄
uID要加載的字符串的標(biāo)識符
lpBuffer用于接收字符串或指向字符串資源本身的只讀指針的緩沖區(qū)
cchBufferMax緩沖區(qū)的大小,以字符為單位

GetModuleHandleW

GetModuleHandleW不是C/C++中標(biāo)準(zhǔn)庫函數(shù),而是windows的一個接口。定義在libloaderapi.h頭文件中。檢索指定模塊的模塊句柄。該模塊必須已由調(diào)用進(jìn)程加載。

HMODULE GetModuleHandleW(
  [in, optional] LPCWSTR lpModuleName
);

lpModuleName:加載的模塊的名稱(.dll或.exe文件)。如果省略文件擴(kuò)展名,則會追加默認(rèn)的庫擴(kuò)展名.dll。文件名字符串可以包含尾隨點(diǎn)字符 (.),以指示模塊名稱沒有擴(kuò)展名。該字符串不必指定路徑。指定路徑時,請確保使用反斜杠 (\),而不是正斜杠 (/)。該名稱將與當(dāng)前映射到調(diào)用進(jìn)程的地址空間的模塊的名稱進(jìn)行比較(大小寫?yīng)毩ⅲ?/p>

如果此參數(shù)為 NULL,則 GetModuleHandle 將返回用于創(chuàng)建調(diào)用進(jìn)程的文件的句柄(.exe文件)。

以下幾個函數(shù)是Rpcrt4.dll動態(tài)庫中的。

UuidFromStringW

UuidFromStringW:轉(zhuǎn)換一個字符串為Uuid結(jié)構(gòu)。定義在rpcdce.h頭文件中

RPC_STATUS UuidFromStringW(
  RPC_WSTR StringUuid,
  UUID     *Uuid
);
參數(shù)說明
StringUuid指向 UUID 的字符串表示形式的指針
Uuid以二進(jìn)制形式返回指向 UUID 的指針

UUID 結(jié)構(gòu)定義了通用唯一標(biāo)識符 (UUID)。UUID 提供對象(如接口、管理器入口點(diǎn)向量或客戶端對象)的唯一指定。UUID 結(jié)構(gòu)是 GUID 結(jié)構(gòu)的同義詞。

typedef GUID UUID;

GUID 標(biāo)識對象,有如 COM 接口、COM 類對象或管理器入口點(diǎn)向量 (EPV)。GUID 是一個 128 位值,由一組 8 個十六進(jìn)制數(shù)字組成,后跟三組,每組 4 個十六進(jìn)制數(shù)字,后跟一組 12 個十六進(jìn)制數(shù)字。以下示例 GUID 顯示了 GUID 中十六進(jìn)制數(shù)字的分組:6B29FC40-CA47-1067-B31D-00DD010662DA。

typedef struct _GUID {
  unsigned long  Data1;
  unsigned short Data2;
  unsigned short Data3;
  unsigned char  Data4[8];
} GUID;

UuidCompare

UuidCompare:比較兩個 UUID并確定它們的順序。返回值給出順序。

signed int UuidCompare(
  UUID       *Uuid1,
  UUID       *Uuid2,
  RPC_STATUS *Status
);
參數(shù)說明
Uuid1指向 UUID 的指針
Uuid2指向 UUID 的指針
Status返回可能發(fā)生的任何錯誤,并且通常由函數(shù)設(shè)置為在返回時RPC_S_OK
返回值意義
–1Uuid1 參數(shù)小于 Uuid2 參數(shù)
0Uuid1 參數(shù)等于 Uuid2 參數(shù)
1Uuid1 參數(shù)大于 Uuid2 參數(shù)

UuidHash

UuidHash:應(yīng)用程序調(diào)用 UuidHash 函數(shù)為指定的 UUID 生成哈希值。

unsigned short UuidHash(
  UUID       *Uuid,
  RPC_STATUS *Status
);
參數(shù)說明
Uuid為其創(chuàng)建哈希值的 UUID
Status返回RPC_S_OK

UuidCreate

UuidCreate:創(chuàng)建一個新的 UUID

RPC_STATUS UuidCreate(
  UUID *Uuid
);

Uuid:返回指向創(chuàng)建的 UUID 的指針

返回值意義
RPC_S_OK調(diào)用成功
RPC_S_UUID_LOCAL_ONLYUUID保證僅對此計算機(jī)是唯一的
RPC_S_UUID_NO_ADDRESS無法獲取此計算機(jī)的以太網(wǎng)或令牌環(huán)硬件地址

wcstok_s

strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

通過使用當(dāng)前區(qū)域設(shè)置或傳入的區(qū)域設(shè)置,查找字符串中的下一個標(biāo)記

wchar_t* wcstok_s(
   wchar_t* str,
   const wchar_t* delimiters,
   wchar_t** context
);

atoi, , ,_atoi_l_wtoi_wtoi_l

將字符串轉(zhuǎn)換為整數(shù)。

int _wtoi(
   const wchar_t *str
);

_wcstombs_s_l

_wcstombs_s_l:將寬字符序列轉(zhuǎn)換為相應(yīng)的多字節(jié)字符序列。

errno_t _wcstombs_s_l(
   size_t *pReturnValue,
   char *mbstr,
   size_t sizeInBytes,
   const wchar_t *wcstr,
   size_t count,
   _locale_t locale
);
參數(shù)含義
pReturnValue轉(zhuǎn)換后的字符串的大小(以字節(jié)為單位),包括空終止符。
mbstr轉(zhuǎn)換后的多字節(jié)字符串的緩沖區(qū)地址。
sizeInBytesmbstr 緩沖區(qū)的大?。ㄒ宰止?jié)為單位)。
wcstr指向要轉(zhuǎn)換的寬字符串。
count要存儲在 mbstr 緩沖區(qū)中的最大字節(jié)數(shù),不包括終止空字符或 _TRUNCATE。
locale要使用的語言環(huán)境

WritePrivateProfileStringA

WritePrivateProfileStringA:將字符串復(fù)制到初始化文件的指定部分。

BOOL WritePrivateProfileStringA(
  [in] LPCSTR lpAppName,
  [in] LPCSTR lpKeyName,
  [in] LPCSTR lpString,
  [in] LPCSTR lpFileName
);
參數(shù)含義
lpAppName字符串將被復(fù)制到的部分的名稱。 如果該部分不存在,則創(chuàng)建它。 部分的名稱與大小寫無關(guān); 字符串可以是大寫和小寫字母的任意組合。
lpKeyName要與字符串關(guān)聯(lián)的鍵的名稱。 如果指定部分中不存在該鍵,則創(chuàng)建它。 如果此參數(shù)為 NULL,則刪除整個部分,包括該部分中的所有條目。
lpString要寫入文件的以 null 結(jié)尾的字符串。 如果此參數(shù)為 NULL,則刪除 lpKeyName 參數(shù)指向的鍵。
lpFileName初始化文件的名稱。如果文件是使用 Unicode 字符創(chuàng)建的,則該函數(shù)將 Unicode 字符寫入文件。 否則,該函數(shù)將寫入 ANSI 字符。

到此這篇關(guān)于C/C++中關(guān)于字符串的常見函數(shù)操作的文章就介紹到這了,更多相關(guān)C++字符串常見函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言中的奇技淫巧

    C語言中的奇技淫巧

    學(xué)習(xí)C語言的過程中,總會遇到很多令人眼前一亮的代碼,尤其是你寫了幾十行的代碼,別人只用了簡單幾行的遞歸就實(shí)現(xiàn)的功能。下面我就總結(jié)幾個C語言中 比較新手向的代碼。讓你有一種woc!還能這么寫的想法
    2018-08-08
  • c語言網(wǎng)絡(luò)編程-標(biāo)準(zhǔn)步驟(改進(jìn)版)

    c語言網(wǎng)絡(luò)編程-標(biāo)準(zhǔn)步驟(改進(jìn)版)

    這篇文章主要介紹了c語言網(wǎng)絡(luò)編程-標(biāo)準(zhǔn)步驟的改進(jìn)說明,需要的朋友可以參考下
    2014-01-01
  • C++11右值引用和std::move語句實(shí)例解析(推薦)

    C++11右值引用和std::move語句實(shí)例解析(推薦)

    右值引用(及其支持的Move語意和完美轉(zhuǎn)發(fā))是C++0x將要加入的最重大語言特性之一。這篇文章主要介紹了C++11右值引用和std::move語句實(shí)例解析,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • c++ 讓程序開機(jī)自動啟動的方法

    c++ 讓程序開機(jī)自動啟動的方法

    這篇文章主要介紹了c++ 讓程序開機(jī)自動啟動的方法,需要的朋友可以參考下
    2017-09-09
  • C語言字母轉(zhuǎn)換大小寫的3種方法圖文詳解

    C語言字母轉(zhuǎn)換大小寫的3種方法圖文詳解

    我們在C語言入門的時候都會遇到要求寫大小寫轉(zhuǎn)換的題目,所以下面這篇文章主要給大家介紹了關(guān)于C語言字母轉(zhuǎn)換大小寫的3種方法,文中給了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-10-10
  • C語言 格式化讀寫文件詳解

    C語言 格式化讀寫文件詳解

    本文主要介紹C語言 格式化讀寫文件,這里提供了關(guān)于格式化讀寫文件的基本資料及實(shí)現(xiàn)示例代碼,有興趣的小伙伴可以參考下,以便理解學(xué)習(xí)
    2016-08-08
  • C++定制刪除器與特殊類設(shè)計(餓漢和懶漢)

    C++定制刪除器與特殊類設(shè)計(餓漢和懶漢)

    這篇文章主要給大家介紹了關(guān)于C++定制刪除器與特殊類設(shè)計的相關(guān)資料,使用餓漢模式和懶漢模式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • OpenCV霍夫變換(Hough Transform)直線檢測詳解

    OpenCV霍夫變換(Hough Transform)直線檢測詳解

    這篇文章主要為大家詳細(xì)介紹了OpenCV霍夫變換直線檢測的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • c++獲取進(jìn)程信息列表和進(jìn)程所調(diào)用的dll列表

    c++獲取進(jìn)程信息列表和進(jìn)程所調(diào)用的dll列表

    這篇文章主要介紹了c++獲取進(jìn)程信息列表和進(jìn)程所調(diào)用的dll列表,大家參考使用吧
    2013-11-11
  • C/C++關(guān)于實(shí)現(xiàn)CAN信號的獲取方法

    C/C++關(guān)于實(shí)現(xiàn)CAN信號的獲取方法

    這篇文章主要介紹了C/C++關(guān)于實(shí)現(xiàn)CAN信號的獲取方法,標(biāo)準(zhǔn)的CAN 數(shù)據(jù)為8字節(jié),即64位,但是CAN FD的最大數(shù)據(jù)可為64字節(jié),為512位,其中的幀ID分為標(biāo)準(zhǔn)幀和擴(kuò)展幀,其中用11位標(biāo)準(zhǔn)幀,用29位表示擴(kuò)展幀
    2023-02-02

最新評論