不存在用户定义的从 "std::vector<std::__cxx11::string, std::allocator<std::__cxx11::string>>" 到 "const std::__cxx11::string" 的适当转换
时间: 2023-08-22 08:08:05 浏览: 79
引用[1]中提到,要改变`__gnu_cxx::__alloc_traits<std::allocator<std::__cxx11::basic_string<char>>>::value_type`类型,需要先将其转化为`std::string`,然后再转化为`double`。而引用[2]中的错误提示是无法将`__gnu_cxx::__alloc_traits<std::allocator<std::__cxx11::basic_string<char>>>::value_type`转换为`__gnu_cxx::__alloc_traits<std::allocator<double>>::value_type`。这个错误是因为在赋值操作中,试图将一个`std::string`类型的值赋给了一个`double`类型的变量。这是不允许的。
解决这个问题的方法是,首先确保`vread_MySql[2]`是一个`std::string`类型的值,然后使用适当的方法将其转换为`double`类型,再将其赋给`vGPS[0]`。可以使用`std::stod`函数将字符串转换为`double`类型。例如,可以这样修改代码:
```cpp
vGPS[0] = std::stod(vread_MySql[2]);
```
引用[3]中提到,如果遇到链接错误,可以尝试下载所需的`libstdc++.so.6.0.xx`文件,并将其放置在`/usr/lib64`目录下。然后,可以使用以下命令删除旧的链接文件并创建新的链接文件:
```bash
rm -rf /usr/lib64/libstdc++.so.6
ln -s libstdc++.so.6.0.xx /usr/lib64/libstdc++.so.6
```
这样可以指定正确的链接版本。
综上所述,要解决不存在用户定义的从`std::vector<std::__cxx11::string, std::allocator<std::__cxx11::string>>`到`const std::__cxx11::string`的适当转换的问题,需要确保赋值操作的类型匹配,并根据需要进行类型转换。