std::string和string的区别
时间: 2023-04-29 08:05:52 浏览: 379
std::string 是 C++ 中的字符串数据类型,使用 std 命名空间来声明。而 cstring 是 C 语言中的字符串库,包含了一系列操作字符串的函数。两者的区别在于 std::string 是基于面向对象的思想设计,具有更多的操作函数和易于扩展性,而 cstring 是基于 C 语言的字符串库,使用较为繁琐,功能比较有限,但是在某些场合下使用更加方便。
相关问题
std::basic_string可以使用std::to_string转换成std::string吗
`std::basic_string<CharT>` 类型(例如 `std::basic_string<char>` 或其他内置字符类型),本身是可以直接转换为 `std::string` 的,因为 `std::string` 可以视为 `std::basic_string<char>` 的特例。你可以通过 `std::string` 的构造函数将 `std::basic_string<CharT>` 的内容复制到一个新的 `std::string` 中。比如:
```cpp
std::basic_string<char> str = "Hello";
std::string strAsStdString = str; // 直接转换
```
当然,如果 `std::basic_string<CharT>` 实际上存储的是非ASCII字符,而你需要将其转换为 `std::string`,那么 `std::to_string` 就不适用了,因为它只针对 `int`、`double` 等数值类型。在这种情况下,你可以先将其内容转换为 `std::wstring`,然后再转为 `std::string`,利用 `std::wstring_convert` 或者 `std::codecvt_utf8_utf16`。
std::map<std::pair<std::string,std::string>, int> edMap; std::pair<std::string,std::string> key; edMap.insert(key,d);写法对吗
不对。std::map的insert方法需要传入一个std::pair类型的参数,该参数包含了要插入的键值对。因此,正确的写法应该是:
```
std::map<std::pair<std::string,std::string>, int> edMap;
std::pair<std::pair<std::string,std::string>, int> keyValue;
edMap.insert(keyValue);
```
其中,keyValue包含了要插入的键值对。第一个元素是一个std::pair类型,表示键;第二个元素是int类型,表示值。
阅读全文