std::string比较
时间: 2023-12-03 12:40:23 浏览: 84
在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::map<std::string, std::string> 和 std::list<std::map<std::string, std::string>> 定义一个方法两种返回类型
可以使用 C++11 的 decltype 关键字来实现这个方法。具体实现可以参考以下代码:
```c++
#include <iostream>
#include <map>
#include <list>
// 定义方法,返回类型为 std::map<std::string, std::string> 或 std::list<std::map<std::string, std::string>>
auto myMethod(int n) -> decltype(std::declval<std::list<std::map<std::string, std::string>>>()[0])
{
if (n % 2 == 0) {
std::map<std::string, std::string> m = {{"key1", "value1"}, {"key2", "value2"}};
return m;
}
else {
std::list<std::map<std::string, std::string>> l = {{{"key1", "value1"}, {"key2", "value2"}}};
return l.front();
}
}
int main()
{
auto r1 = myMethod(2);
std::cout << "r1:" << std::endl;
for (const auto& kv : r1) {
std::cout << kv.first << ": " << kv.second << std::endl;
}
auto r2 = myMethod(3);
std::cout << "r2:" << std::endl;
for (const auto& kv : r2) {
std::cout << kv.first << ": " << kv.second << std::endl;
}
return 0;
}
```
在上述代码中,使用 `decltype(std::declval<std::list<std::map<std::string, std::string>>>()[0])` 来定义返回类型,它的含义是取 std::list<std::map<std::string, std::string>> 的第一个元素的类型,也就是 std::map<std::string, std::string> 的类型。在方法内部,根据输入参数 n 的奇偶性,返回不同类型的值。最后在 main 函数中测试该方法的返回值。
std::tuple<std::string, std::string, std::string, std::string>其中4个std::string依次为id、type、info、start_id改为std::variant
将std::tuple<std::string, std::string, std::string, std::string>改为std::variant可以使用以下方式:
```cpp
#include <variant>
#include <string>
using MyVariant = std::variant<std::string, std::string, std::string, std::string>;
int main() {
MyVariant variant;
variant = "id";
variant = "type";
variant = "info";
variant = "start_id";
return 0;
}
```
这样,你就可以使用std::variant来存储id、type、info和start_id这四个std::string类型的值了。
阅读全文