判断两个std::string相等
时间: 2023-11-17 10:04:26 浏览: 150
要判断两个std::string对象是否相等,可以使用比较运算符"=="。下面是一个示例代码:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello";
std::string str2 = "Hello";
if (str1 == str2) {
std::cout << "str1和str2相等" << std::endl;
} else {
std::cout << "str1和str2不相等" << std::endl;
}
return 0;
}
```
在这个示例中,我们使用"=="运算符比较了str1和str2的值是否相等。如果相等,则输出"str1和str2相等";否则,输出"str1和str2不相等"。
相关问题
std::string比较
在C++中,可以使用`==`运算符来比较两个`std::string`对象是否相等。如果两个对象的内容相同,则返回`true`,否则返回`false`。例如:
```c++
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello";
std::string str2 = "World";
if (str1 == str2) {
std::cout << "str1 and str2 are equal." << std::endl;
} else {
std::cout << "str1 and str2 are not equal." << std::endl;
}
return 0;
}
```
输出结果为:
```
str1 and str2 are not equal.
```
需要注意的是,`compare`方法和`strcmp`并不相同,它比较的是`std::string`的`size()`大小里的所有字节。在`size()`长度范围里,如果有`\0`字符,一样进行比较。所以在不知道`std::string`里是否存储纯字符串时,最好先转换为`const char*`(调用`c_str()`),再调用`strcmp`比较。
std::string_view的使用
std::string_view是C++17引入的一个轻量级的字符串视图类,用于对字符串进行非拷贝的读取操作。它提供了类似于std::string的接口,但没有实际拥有字符串的内存。
使用std::string_view非常简单,可以像使用std::string一样操作它。首先,你需要包含< string_view >头文件。
以下是使用std::string_view的一些常见用法:
1. 创建std::string_view对象:
```cpp
std::string_view view1("Hello"); // 从字符串字面值创建
std::string str = "World";
std::string_view view2(str); // 从std::string对象创建
```
2. 获取字符串的长度:
```cpp
std::string_view view("Hello");
std::size_t length = view.size(); // 获取字符串的长度
```
3. 访问字符串的元素:
```cpp
std::string_view view("Hello"); char firstChar = view[0]; // 访问第一个字符
```
4. 比较两个std::string_view对象:
```cpp
std::string_view view1("Hello");
std::string_view view2("World");
if (view1 == view2) {
// 两个字符串相等
} else if (view1 < view2) {
// view1小于view2
} else {
// view1大于view2
}
```
5. 子串操作:
```cpp
std::string_view view("Hello, World");
std::string_view substr = view.substr(7, 5); // 获取子串 "World"
```
需要注意的是,std::string_view并不拥有字符串的内存,因此确保原始字符串的生命周期长于std::string_view非常重要。此外,由于std::string_view不拥有内存,不能修改字符串的内容。
希望这些信息能对你有所帮助!如果你还有其他问题,请继续提问。