iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言与C++中关于字符串使用的比较
  • 609
分享到

C语言与C++中关于字符串使用的比较

2024-04-02 19:04:59 609人浏览 薄情痞子
摘要

目录相似处字符串字面值c++标准库string类型相似处   C++作为C的进阶版,可以调用C的库函数。C++标准库包括了C标准库,C++头文件cctype其实就

相似处

  C++作为C的进阶版,可以调用C的库函数。C++标准库包括了C标准库,C++头文件cctype其实就利用了C的ctype.h中的库函数。在C++中使用C的头文件都会在前面加c,比如C的name.h在C++就是cname。

  为了与C兼容,C++有字符串字面值,也就是类似"hello world"这种,但是这和string类型不一样,视编译器而定string最后不一定有’\0’。

字符串字面值

  字符串字面值是一串常量字符,采用双引号括起来的零个或者多个字符表示,不可打印字符表示成相对应的转义字符:

"Hello World"       //simple string literal
""                  //empty string literal
"\nCC\toptions\t"   //string literal using newlines and tabs 

  为了兼容C语言,C++所有字符串字面值都由编译器自动在末尾添加一个空字符,和C语言一样:

'A'                 //single quote: character literal
"A"                 //double quote: character string literal

  表示包含字母A和空字符两个字符的字符串。

  表示包含字母A和空字符两个字符的字符串。

  也存在宽字符和宽字符串字面值,如:

L'a'
L"a wide string literal"

  宽字符串字面值是一串常量宽字符串,同样以宽空字符结束。

  两个相邻的仅由空格、制表符或换行符分开的字符串字面值(宽字符串字面值),可连接成一个新字符串字面值,使得多行书写长字符串字面值变得简单。

std::cout << "a multi-line"
             "string literal"
             "using concatenation"
          << std::endl;

  执行这条语句将会输出:

a multi-line string literal using concatenation

  但如果连接字符串字面值和宽字符串字面值,将会出错:

std::cout << "a multi-line"
             L"string literal"
             "using concatenation"
          << std::endl;

  其结果将是未定义的(undefined)。

  C++结构比较自由,甚至可以在单词中断行:

std::cou\
t << "Hi" << st\
d::endl;

  等价于:

std::cout << "Hi" << std::endl;

  可以用这个特性编写长字符串字面值:

std::cout << "a multi-line \
string literal \
using a backslash"
           <<std::endl;
           return 0;

  使用反斜线符号时这个符号必须是该行的尾字符,不允许后面有任何注释或者空格。

C++标准库string类型

string类型初始化

string s1;   //默认构造函数,s1为空串
string s2(s1);   //将s2初始化为s1的副本
string s3("value");   //将s3初始化为字符串字面值副本
string s4(n,'c');     //将s4初始化为字符'c'的n个副本

String对象的读写  

一个有用的string IO操作是getline,getline函数从输入流的下一行开始读取,保存读取的内容到string中,但不包括换行符,只要遇到换行符,哪怕是该行第一个字符,getline也将停止读入并返回。   

由于getline返回时丢弃换行符,换行符将不会存储在string对象中。下面给出一个使用getline读取字符串的例子:

int main()
{
	string line;
	while(getline(cin,line))
		cout << line << endl;
	return 0;
}

String对象的操作

s.empty()           //s为空串返回true,否则返回false
s.size()            //返回s中字符个数
s[n]                //返回s中位置为n的字符,位置从0开始计数
s1+s2               //将s1和s2连接成一个新字符串
s1=s2               //将s1替换成s2副本
v1==v2              //比较v1和v2,相等返回true,否则返回false
!=,<,<=,>,>=    //字符串比较

从逻辑上讲,size函数应该返回整型,然而事实上返回的是string::size_type类型,为避免溢出,在代码编写时最好用string::size_type。

关系操作符的比较规则和C的strcmp一样不赘述。

和字符串字面值的连接  

上述s1+s2连接的是字符串,字符串也是可以和字符串字面值连接的。   

由于编译器不同,string类型变量结尾的’\0’时有时无,但是有一点毫无疑问,两个字符串字面值是不能连接的。

string s1="hello";
string s2="world";
string s3=s1+"hi";             //没问题,字符串连接字符串字面值
string s4="hello"+"world";     //出错,+操作符不接受两个const char[]变量
string s5=s1+"hello"+"world"   //没问题,每个+操作符都有string作为操作数

到此这篇关于C语言与C++中关于字符串使用的比较的文章就介绍到这了,更多相关C语言字符串内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言与C++中关于字符串使用的比较

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

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

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

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

下载Word文档
猜你喜欢
  • C语言与C++中关于字符串使用的比较
    目录相似处字符串字面值C++标准库string类型相似处   C++作为C的进阶版,可以调用C的库函数。C++标准库包括了C标准库,C++头文件cctype其实就...
    99+
    2022-11-13
  • c语言如何进行字符串比较
    这篇文章将为大家详细讲解有关c语言如何进行字符串比较,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方...
    99+
    2023-06-14
  • 详解C语言内核字符串拷贝与比较
    在上一篇文章《驱动开发:内核字符串转换方法》中简单介绍了内核是如何使用字符串以及字符串之间的转换方法,本章将继续探索字符串的拷贝与比较,与应用层不同内核字符串拷贝与比较也需要使用内核...
    99+
    2022-11-13
  • c语言中怎么用strcmp比较两个字符串
    在C语言中,可以使用strcmp函数来比较两个字符串。strcmp函数是一个标准库函数,用于比较两个字符串的大小。strcmp函数的...
    99+
    2023-10-10
    c语言
  • C/C++中比较字符串的方法详解
    目录一、strcmp函数适用对象函数介绍用法举例二、compare()函数适用对象用法举例三、==适用对象用法举例四、strstr函数适用对象函数介绍用法举例总结一、strcmp函数...
    99+
    2023-02-05
    C比较字符串 C++比较字符串 C字符串 C++字符串
  • c语言怎么比较两个字符串是否相等
    在C语言中,可以使用strcmp函数来比较两个字符串是否相等。strcmp函数的原型为:int strcmp(const char ...
    99+
    2023-10-10
    c语言
  • c语言中字符串与字符串数组详解
    目录字符串字符串输出输入字符串字符串常用方法字符串数组总结字符串 用双引号引起来的就是字符串,字符串由字符组成 字符串使用%s格式化输出 字符串以\0结尾,...
    99+
    2022-11-12
  • C语言中字符串怎么用
    小编给大家分享一下C语言中字符串怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!串的定义零个或多个字符组成的有限序列串的比较 串的比较实际上是在比较...
    99+
    2023-06-26
  • 如何使用go语言实现字符串比较
    今天小编给大家分享的是如何使用go语言实现字符串比较,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。go语言比较字符串的方法:1、使用“==”运算符,语法“字符串1==字符串2”;2、...
    99+
    2023-06-15
  • C语言的变量与常量 字符字符串与转义字符详解
    目录一.变量1.1定义变量的方法1.2变量的分类1.3变量的使用二.常量2.1字面常量 2.2 const修饰的常变量 2.3#define定义的标识符常量2.4...
    99+
    2022-11-12
  • 关于c语言中输出字符指针的相关问题
    目录c语言输出字符指针问题例如定义一个 char * p = "hello";的字符指针c语言指针求字符串长度c语言输出字符指针问题 例如定义一个 char * ...
    99+
    2022-11-13
  • c语言重要的字符串与内存函数
    目录一.字符串函数1. 求字符串长度的strlen2.比较字符串大小的strcmp3.复制字符串的strcpy4.追加字符串的strcat5.查找字符串函数的strstr二、内存函数...
    99+
    2022-11-12
  • C语言中字符串的定义方法
    本篇内容介绍了“C语言中字符串的定义方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • C语言与C++中const的用法对比
    目录一、C语言中的const二、C++中的const三、进一步比较C和C++中的const四、const与宏的区别五、小结一、C语言中的const const修饰的变量是只读的,本质...
    99+
    2022-11-13
  • c语言如何提取字符串中的数字
    在C语言中,可以使用isdigit函数和atoi函数来提取字符串中的数字。isdigit函数用于判断一个字符是否为数字字符,其原型如...
    99+
    2023-09-16
    c语言
  • c语言怎么删除字符串中的指定字符
    在C语言中,可以通过循环遍历字符串并判断字符是否是指定字符,然后将非指定字符复制到新的字符串中,从而删除字符串中的指定字符。以下是一...
    99+
    2023-08-16
    c语言
  • c语言如何删除字符串中的指定字符
    可以使用循环遍历字符串,将不需要删除的字符拷贝到一个新的字符串中,最后将新的字符串赋值给原字符串。以下是一个示例代码:```c#in...
    99+
    2023-08-24
    c语言
  • C语言字符串的模式匹配之BF与KMP
    目录BF算法(Brute-Force算法)KMP算法(快速的)KMP—yxc模板总结确定一个子串(模式串)在主串中第一次出现的位置。 BF算法(Brute-Force算法) BF算法...
    99+
    2022-11-12
  • C/C++中关于字符串的常见函数操作大全
    目录wcsncpy_sswprintf_smemsetmemcmpmemcpywcslenLoadStringWGetModuleHandleWUuidFromStringWUuid...
    99+
    2023-03-22
    C++字符串常见函数 C++常见函数
  • C语言中字符串常用操作总结
    目录字符串的定义和初始化字符串的赋值字符串的输入输出字符串的比较字符串的拼接字符串的查找和替换字符串的常用函数strcpy函数strcat函数strlen函数strcmp函数strc...
    99+
    2023-05-20
    C语言字符串常用操作 C语言字符串操作 C语言字符串
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作