使用 c.str 从字符串转换为 cstring
Using c.str to convert from string to cstring
我正在练习一些关于字符串和字符串的工作。使用 c_str()
从一个字符串转到字符串,我得到一个不兼容的数据类型编译错误。例如,这是给出所述错误的代码:
string str = "StackOverFlow";
char inCstring[20]{};
inCstring = str.c_str();
有什么想法吗?
问题是 str.c_str() 返回一个常量字符*,并且您正在尝试将其传递给字符*。使用 strcpy 获得预期的结果:
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main()
{
string str = "StackOverFlow";
char inCstring[20];
strcpy(inCstring, str.c_str());
cout << "str: " << str << endl;
cout << "inCstring: " << inCstring << endl;
return 0;
}
所以我想出了两种方法来实现这一目标。
首先,重要的是要记住,你不能分配给整个数组,这意味着必须指定要分配给的数组元素。因此,尝试将字符串分配给 char 数组根本不起作用。
话虽如此,通过指定元素,可以在 char 数组的特定元素中分配字符。以下是完成字符串到字符串
(字符串到字符数组)"转换"的两种方法。请参阅文森特的回答以获取完整的代码。我发现方法 B 更好,因为我想在我的字符数组上拥有最大大小。
方法一:
string str = "StackOverFlow";
const char* inCstring;
inCstring = str.c_str();
方法B:
string str = "StackOverFlow";
char inCstring[20]{};
然后使用 strcpy
strcpy(inCstring, str.c_str());
相关文章:
- 如何转换真实路径 CString c++
- 如何将 CString 转换为字节 [] 数组?
- 如何将 CComVariant bstr 转换为 CString
- 如何将CString转换为使用WCHAR的Windows API和自定义函数?
- 我如何将void *值正确转换为cstring
- 为什么将字符串向量值转换为 cstring 不等同于手动写入字符串?
- 使用 cstring 将字符串转换为字符数组
- 如何将 LPARAM lParam 转换为 CString
- 将 BSTR 转换为 CString 时出错
- CString 到 LPCTSTR 的转换会中断 sql 查询
- 将 CString 表单转换为常量字符*
- CString 到 LPCTSTR 的转换
- 错误 C2440: 'type cast':无法从 'bool' 转换为 'CString'
- 将 CString 转换为字符类型
- 在 UNICODE 应用程序中将 char * 转换为 catch 块内的 CString
- 在C++中将字符串转换为Cstring
- 将cstring转换为camelcase
- 如何正确地将无符号字符转换为CString,并再次将CString的结果反向转换为无符号字符
- 从 ATL::CString 转换为 C++ 中的字符串
- ToCString 的标头在哪里,或者如何将参数转换为 cstring?