iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C/C++中关于字符串的常见函数操作方法有哪些
  • 620
分享到

C/C++中关于字符串的常见函数操作方法有哪些

2023-07-05 15:07:30 620人浏览 独家记忆
摘要

本篇内容介绍了“C/C++中关于字符串的常见函数操作方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!wcsncpy_swcsncpy

本篇内容介绍了“C/C++中关于字符串的常见函数操作方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

wcsncpy_s

wcsncpy_s:将一个宽字符串的字符复制到另一个宽字符串。定义在头文件<wchar.h>

errno_t wcsncpy_s(   wchar_t *strDest,   size_t numberOfElements,   const wchar_t *strSource,   size_t count);
参数说明
strDest目标字符串
numberOfElements目标字符串的大小(以字符为单位)
strSource资源字符串
count要复制的字符数

示例

#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 ");    }}

结果

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

swprintf_s

swprintf_s:将设置格式的数据写入字符串。定义在头文件<stdio.h> 或 <wchar.h>

int swprintf_s(   wchar_t *buffer,   size_t sizeOfBuffer,   const wchar_t *fORMat,   ...);
参数说明
buffer输出的存储位置
sizeOfBuffer可存储的最多字符数
format格式控件字符串
&hellip;要设置格式的可选参数

示例

#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 指向的内存块的前 num 字节设置为指定值(解释为无符号字符)。定义在头文件string.h

void * memset ( void * ptr, int value, size_t num );
参数说明
ptr指向要填充的内存块的指针
value要设置的值。 该值作为 int 传递,但该函数使用该值的无符号字符转换填充内存块。
num要设置为值的字节数。size_t 是无符号整数类型。

示例

#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 指向的内存块的前 num 字节与 ptr2 指向的前 num 字节进行比较,如果它们都匹配则返回零,否则返回一个不同于零的值,表示如果它们不匹配则哪个更大。定义在string.h中。

请注意,与 strcmp 不同,该函数在找到空字符后不会停止比较。

int memcmp ( const void * ptr1, const void * ptr2, size_t num );
参数说明
ptr1内存块的指针
ptr2内存块的指针
num比较的字节数
返回值说明
<0两个内存块中不匹配的第一个字节在 ptr1 中的值小于 ptr2 中的值(如果评估为 unsigned char 值)
>0两个内存块中不匹配的第一个字节在 ptr1 中的值大于在 ptr2 中的值(如果评估为 unsigned char 值)
=0两个内存块的内容相等
#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 个字节的值从 source 指向的位置直接复制到 destination 指向的内存块。

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

示例

#include <stdio.h>#include <string.h>struct {  char name[40];  int age;} person, person_copy;int main (){  char myname[] = "Pierre de Fermat";    memcpy ( person.name, myname, strlen(myname)+1 );  person.age = 46;    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);

示例

#include <stdio.h>#include <wchar.h>int main(){wchar_t wsInput[256];wprintf(L"Enter a sentence: ");fgetws(wsInput, 256, stdin);  wprintf(L"You entered %u characters.\n", wcslen(wsInput));return 0;}

输出

Enter a sentence: 南京
You entered 5 characters.

LoadStringW

LoadStringW不是C/c++中标准库函数,而是windows的一个接口。定义在libloaderapi.h头文件中。从与指定模块关联的可执行文件中加载字符串资源,并将该字符串复制到具有终止 null 字符的缓冲区中,或者返回指向字符串资源本身的只读指针。

int LoadStringW(  [in, optional] HINSTANCE hInstance,  [in]           UINT      uID,  [out]          LPWSTR    lpBuffer,  [in]           int       cchBufferMax);
参数说明
hInstance其可执行文件包含字符串资源的模块实例的句柄
uID要加载的字符串的标识符
lpBuffer用于接收字符串或指向字符串资源本身的只读指针的缓冲区
cchBufferMax缓冲区的大小,以字符为单位

GetModuleHandleW

GetModuleHandleW不是C/C++中标准库函数,而是windows的一个接口。定义在libloaderapi.h头文件中。检索指定模块的模块句柄。该模块必须已由调用进程加载。

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

lpModuleName:加载的模块的名称(.dll或.exe文件)。如果省略文件扩展名,则会追加默认的库扩展名.dll。文件名字符串可以包含尾随点字符 (.),以指示模块名称没有扩展名。该字符串不必指定路径。指定路径时,请确保使用反斜杠 (\),而不是正斜杠 (/)。该名称将与当前映射到调用进程的地址空间的模块的名称进行比较(大小写独立)。

如果此参数为 NULL,则 GetModuleHandle 将返回用于创建调用进程的文件的句柄(.exe文件)。

以下几个函数是rpcrt4.dll动态库中的。

UuidFromStringW

UuidFromStringW:转换一个字符串为Uuid结构。定义在rpcdce.h头文件中

RPC_STATUS UuidFromStringW(  RPC_WSTR StringUuid,  UUID     *Uuid);
参数说明
StringUuid指向 UUID 的字符串表示形式的指针
Uuid以二进制形式返回指向 UUID 的指针

UUID 结构定义了通用唯一标识符 (UUID)。UUID 提供对象(如接口、管理器入口点向量或客户端对象)的唯一指定。UUID 结构是 GUID 结构的同义词。

typedef GUID UUID;

GUID 标识对象,有如 COM 接口、COM 类对象或管理器入口点向量 (EPV)。GUID 是一个 128 位值,由一组 8 个十六进制数字组成,后跟三组,每组 4 个十六进制数字,后跟一组 12 个十六进制数字。以下示例 GUID 显示了 GUID 中十六进制数字的分组: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);
参数说明
Uuid1指向 UUID 的指针
Uuid2指向 UUID 的指针
Status返回可能发生的任何错误,并且通常由函数设置为在返回时RPC_S_OK
返回值意义
&ndash;1Uuid1 参数小于 Uuid2 参数
0Uuid1 参数等于 Uuid2 参数
1Uuid1 参数大于 Uuid2 参数

UuidHash

UuidHash:应用程序调用 UuidHash 函数为指定的 UUID 生成哈希值。

unsigned short UuidHash(  UUID       *Uuid,  RPC_STATUS *Status);
参数说明
Uuid为其创建哈希值的 UUID
Status返回RPC_S_OK

UuidCreate

UuidCreate:创建一个新的 UUID

RPC_STATUS UuidCreate(  UUID *Uuid);

Uuid:返回指向创建的 UUID 的指针

返回值意义
RPC_S_OK调用成功
RPC_S_UUID_LOCAL_ONLYUUID保证仅对此计算机是唯一的
RPC_S_UUID_NO_ADDRESS无法获取此计算机的以太网或令牌环硬件地址

wcstok_s

strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

通过使用当前区域设置或传入的区域设置,查找字符串中的下一个标记

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

atoi, , ,_atoi_l_wtoi_wtoi_l

将字符串转换为整数。

int _wtoi(   const wchar_t *str);

_wcstombs_s_l

_wcstombs_s_l:将宽字符序列转换为相应的多字节字符序列。

errno_t _wcstombs_s_l(   size_t *pReturnValue,   char *mbstr,   size_t sizeInBytes,   const wchar_t *wcstr,   size_t count,   _locale_t locale);
参数含义
pReturnValue转换后的字符串的大小(以字节为单位),包括空终止符。
mbstr转换后的多字节字符串的缓冲区地址。
sizeInBytesmbstr 缓冲区的大小(以字节为单位)。
wcstr指向要转换的宽字符串。
count要存储在 mbstr 缓冲区中的最大字节数,不包括终止空字符或 _TRUNCATE
locale要使用的语言环境

WritePrivateProfileStringA

WritePrivateProfileStringA:将字符串复制到初始化文件的指定部分。

BOOL WritePrivateProfileStringA(  [in] LPCSTR lpAppName,  [in] LPCSTR lpKeyName,  [in] LPCSTR lpString,  [in] LPCSTR lpFileName);
参数含义
lpAppName字符串将被复制到的部分的名称。 如果该部分不存在,则创建它。 部分的名称与大小写无关; 字符串可以是大写和小写字母的任意组合。
lpKeyName要与字符串关联的键的名称。 如果指定部分中不存在该键,则创建它。 如果此参数为 NULL,则删除整个部分,包括该部分中的所有条目。
lpString要写入文件的以 null 结尾的字符串。 如果此参数为 NULL,则删除 lpKeyName 参数指向的键。
lpFileName初始化文件的名称。如果文件是使用 Unicode 字符创建的,则该函数将 Unicode 字符写入文件。 否则,该函数将写入 ANSI 字符。

“C/C++中关于字符串的常见函数操作方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: C/C++中关于字符串的常见函数操作方法有哪些

本文链接: https://www.lsjlt.com/news/352535.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C/C++中关于字符串的常见函数操作方法有哪些
    本篇内容介绍了“C/C++中关于字符串的常见函数操作方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!wcsncpy_swcsncpy...
    99+
    2023-07-05
  • C/C++中关于字符串的常见函数操作大全
    目录wcsncpy_sswprintf_smemsetmemcmpmemcpywcslenLoadStringWGetModuleHandleWUuidFromStringWUuid...
    99+
    2023-03-22
    C++字符串常见函数 C++常见函数
  • C语言中的字符串操作方法有哪些
    本文小编为大家详细介绍“C语言中的字符串操作方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中的字符串操作方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。字符串在C语言里使用非常多,因为很...
    99+
    2023-06-29
  • C++常用字符串函数有哪些
    本篇内容主要讲解“C++常用字符串函数有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++常用字符串函数有哪些”吧!1、cstring.h常用函数介绍cstring.h库即C语言中的str...
    99+
    2023-06-25
  • C#中常见的字符串操作问题及解决方法
    C#中常见的字符串操作问题及解决方法字符串拼接问题在C#中,我们经常需要将多个字符串拼接在一起,但是如果使用简单的加号"+"运算符,则会出现性能问题。这是因为在每次拼接字符串时,都会创建一个新的字符串对象,导致内存的频繁分配和回收。解决方法...
    99+
    2023-10-22
    解决方法 字符串操作问题
  • python中字符串的常见操作方法
    1. 字符串概念,字符串是一个容器,包含若干个字符并按照一定的顺序组织成一个整体。字符串支持索引操作。 2. 创建字符串基本语法 变量名 = "字符串信息" 变量名 = '字符串信息' 变量名 = """字符串信息""" 变量名 = ''...
    99+
    2023-01-30
    字符串 操作方法 常见
  • Python中常见字符串去除空格操作的方法有哪些
    这篇文章将为大家详细讲解有关Python中常见字符串去除空格操作的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1:strip()方法去除字符串开头或者结尾的空格>>>&nbs...
    99+
    2023-06-25
  • C#线程操作常见的操作方法有哪些
    这篇文章主要讲解了“C#线程操作常见的操作方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#线程操作常见的操作方法有哪些”吧!C#线程操作常见的操作方法是什么呢?C#线程操作方法的...
    99+
    2023-06-17
  • Python3中字符串的常用操作方法有哪些
    这篇文章主要介绍了Python3中字符串的常用操作方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python3中字符串的常用操作方法有哪些文章都会有所收获,下面我们一...
    99+
    2024-04-02
  • SQL Server截取字符串函数操作常见方法
    目录1、SUBSTRING()函数2、LEFT()函数 3、RIGHT()函数4、CHARINDEX()函数5、LEN函数补充知识:SQL Server 根据分隔符截取指定位置的子字符串...
    99+
    2023-06-11
    sqlserver截取字符串函数 sqlserver截取字段前几位 sqlserver截取字符串
  • VBS中有哪些字符串操作函数
    VBS中有哪些字符串操作函数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 Split(expression, delimiter, count, compare)返回基于...
    99+
    2023-06-08
  • JavaScript字符串处理常见操作有哪些
    这篇文章给大家分享的是有关JavaScript字符串处理常见操作有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、字符串合并操作:“ + ”var iNum01&...
    99+
    2024-04-02
  • Python中的字符串操作函数有哪些?
    Python作为一门强大的编程语言,提供了许多有用的字符串操作函数,用于处理和操作字符串数据。本文将介绍Python中常用的字符串操作函数,并提供一些具体的代码示例。len() 函数:用于计算字符串的长度。示例代码:string = &qu...
    99+
    2023-10-22
    字符串操作函数: 字符串长度:len() 字符串连接:join() 字符串分割:split()
  • Python字符串常规操作方法有哪些
    一、前言在Python开发的过程中,为了实现某项功能,经常需要对某些字符串进行特殊的处理,如拼接字符串、截取字符串、格式化字符串等。二、拼接字符串在使用“+”运算符可完成对多个字符串的拼接,“+”运算符可以连接多个字符串并产生一个字符串对象...
    99+
    2023-05-14
    Python
  • 字符串有哪些操作方法
    小编给大家分享一下字符串有哪些操作方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!字符串属性和方法字符串用于表示和操作字符序列...
    99+
    2024-04-02
  • C#中的字符串操作常见技巧是什么
    在C#中,常见的字符串操作技巧包括: 字符串连接:使用“+”运算符或String.Concat()方法将多个字符串连接起...
    99+
    2024-04-03
    C#
  • js中操作字符串的方法有哪些
    小编给大家分享一下js中操作字符串的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!var a = '世界上最远...
    99+
    2024-04-02
  • python中字符串String及其常见操作指南(方法、函数)
    目录下标与切片常见方法查找替换分割大小写格式化对齐格式化清除空白字符检查补充:16个常用函数总结注意:对字符串的所有操作,原始数据(即原字符串)不变 !(字符串是不可变类型) 对原字...
    99+
    2024-04-02
  • python中字符串操作方法有哪些
    这期内容当中小编将会给大家带来有关python中字符串操作方法有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决...
    99+
    2023-06-14
  • php中字符串有哪些操作方法
    这篇文章主要介绍“php中字符串有哪些操作方法”,在日常操作中,相信很多人在php中字符串有哪些操作方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中字符串有哪些操作方法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作