C++ 中字符串和字符的比较
这个简单的指南是关于在 C++ 中使用字符串以及如何将这些字符串与其他文字进行比较。在继续之前,我们将简要介绍 C++ 中的字符串。
在 C++ 中,字符串可以按两种不同的方式分类:
-
创建一个
Character
数组以形成一个字符串 -
在 C++ 中使用标准的
String
库
在 C++ 中创建字符数组
与 C 语言一样,C++ 也为我们提供了字符数组,即 char
数组,它可以用作字符串文字。它是一个以 null
结尾的一维字符数组。
因此,字符串是通过形成一个 char
数组并以 null
字符终止它来创建的。
请注意,要使用聚合方法(例如,cout<< charArray
)打印字符数组,null
字符必须终止字符数组。C++ 使用 \0
作为 NULL
字符,它有助于聚合方法来检测字符串的结尾(如果没有一些结束标记符号就不可能检测到数组的结尾)。
因此,下面的示例声明了一个大小为 11
的字符数组,尽管 C 语言
仅包含十个字符。
char word[11] = {'C', '-', 'l', 'a', 'n','g','u','a','g','e','\0'};
上面的语句也可以写成下面这样,前提是你遵循初始化规则。
char word[] = "C-language";
如果你忘记将 null
字符放在末尾,编译器会隐式地将 null
字符放在末尾。让我们看看下面的程序。
#include <iostream>
using namespace std;
int main () {
char word[11] = {'C', '-', 'l', 'a', 'n','g','u','a','g','e','\0'};
cout << "First message: ";
cout << word << endl;
return 0;
}
上述代码片段中的第 06 行将向输出提供 First Message:
,而第 07 行将显示 word
变量中的所有字符,直到遇到\0
。因此,上面的代码片段将生成以下输出。
First Message: C-language
在 C++ 中使用 String
库
C++ 有一个内置的 string.h
头文件作为其标准库的一部分。它提供了一系列功能(例如,strcpy
、strlen
等)来处理 C 风格的字符串(即,以 null 结尾的字符串)。
请注意,所有没有 .h
的现代 string
库都与 string.h
不同。string
类库 是一个用于操作现代 C++ 字符串的 C++ 库,而 string.h
是一个用于操作 C 样式字符串(即以空字符结尾的字符串)的 C 头文件。
让我们看看下面的代码来理解 string.h
库。
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char country[] = "Pakistan";
char countryTemp[50]="abc";
cout<<"countryTemp length before initializing is:";
cout<<strlen(countryTemp)<<endl;
//strcpy()
cout<<"Let's copy country to countryTemp"<<endl;
strcpy(countryTemp,country );
cout<<"countryTemp="<<countryTemp<<endl;
cout<<"countryTemp length after copying country is:";
cout<<strlen(countryTemp)<<endl;
return 0;
}
上面的程序首先声明了两个字符数组(C-strings)并用 Pakistan
初始化第一个。第 10 行打印 countryTemp
的长度,即 3。
虽然 countryTemp
的总大小为 50 个字节,但 strcpy
只能根据 NULL
字符(放置在数组的第四个字节)计算大小。因此,strcpy
返回 3。
第 14 行使用 strcpy
函数将 country
数组的内容复制到 countryTemp
。因此,countryTemp
的新长度变为 8
。
输出:
countryTemp length before initializing is:3
Let's copy country to countryTemp
countryTemp=Pakistan
countryTemp length after copying country is:8
C++ 中字符串与 Char 的比较
人们将字符串与字符常量进行比较是一个常见的问题。这实际上是不可能的。
参考下面的代码。
#include <iostream>
using namespace std;
int main()
{
cout << "Do you want to proceed (y or n)?\n";
char inp;
cin >> inp;
if (inp == "y") //error here
cout<<"Hello again"<<endl;
else
cout<<"Good Bye"<<endl;
return 0;
}
在这个函数中,我们从用户那里做了一个输入,它是一个 char
变量,在 if
条件下,我们将它与一个用双引号括起来的字符串文字进行比较。此代码将生成错误:ISO C++ 禁止在指针和整数之间进行比较
错误。
建议在 string
变量而不是 char
变量中进行输入以避免此错误。
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "Do you want to proceed (y or n)?\n";
string ans;
cin >> ans;
if (ans == "y") //error here
cout<<"Hello again"<<endl;
else
cout<<"Good Bye"<<endl;
return 0;
}
输出:
Do you want to proceed (y or n)?
n
Good Bye
相关文章
在 C++ 中通过掷骰子生成随机值
发布时间:2023/04/09 浏览次数:169 分类:C++
-
本文解释了如何使用时间因子方法和模拟 C++ 中的掷骰子的任意数方法生成随机数。了解它是如何工作的以及它包含哪些缺点。提供了一个 C++ 程序来演示伪数生成器。
在 C++ 中使用模板的链表
发布时间:2023/04/09 浏览次数:158 分类:C++
-
本文解释了使用模板在 C++ 中创建链表所涉及的各个步骤。工作程序演示了一个链表,该链表使用模板来避免在创建新变量时声明数据类型的需要。
在 C++ 中添加定时延迟
发布时间:2023/04/09 浏览次数:142 分类:C++
-
本教程将为你提供有关在 C++ 程序中添加定时延迟的简要指南。这可以使用 C++ 库为我们提供的一些函数以多种方式完成。
在 C++ 中创建查找表
发布时间:2023/04/09 浏览次数:155 分类:C++
-
本文重点介绍如何创建查找表及其在不同场景中的用途。提供了三个代码示例以使理解更容易,并附有代码片段以详细了解代码。
如何在 C++ 中把字符串转换为小写
发布时间:2023/04/09 浏览次数:63 分类:C++
-
介绍了如何将 C++ std::string 转换为小写的方法。当我们在考虑 C++ 中的字符串转换方法时,首先要问自己的是我的输入字符串有什么样的编码
如何在 C++ 中确定一个字符串是否是数字
发布时间:2023/04/09 浏览次数:163 分类:C++
-
本文介绍了如何检查给定的 C++ 字符串是否是数字。在我们深入研究之前,需要注意的是,以下方法只与单字节字符串和十进制整数兼容。
如何在 c++ 中查找字符串中的子字符串
发布时间:2023/04/09 浏览次数:65 分类:C++
-
本文介绍了在 C++ 中检查一个字符串是否包含子字符串的多种方法。使用 find 方法在 C++ 中查找字符串中的子字符串
如何在 C++ 中把字符串转换为 Char 数组
发布时间:2023/04/09 浏览次数:107 分类:C++
-
本文介绍了在 C++ 中把字符串转换为 char 数组的多种方法。使用 std::basic_string::c_str 方法将字符串转换为 char 数组