如何将int和std::string转换为char*
How to convert int and std::string to char*?
如何将int和std::string转换为char* ?
I'm try to do this:
int a = 1;
std::string b = "str";
char* x = a + b;
我不想要这样的东西:
std::stringstream ss;
std::string str2char;
ss << a;
str2char = ss.str() + "str";
std::vector<char> writable(str2char.size() + 1);
std::copy(str2char.begin(), str2char.end(), writable.begin());
x = &writable[0];
如何处理?
一种方法是使用字符串流(包括<sstream>
),将各种类型的数据输出到其中,然后将输出作为字符串或const char*
获取,如下所示:
std::stringstream ss;
int a = 1;
std::string b = "str";
ss << a << b;
std::string res(ss.str());
const char *x = res.c_str();
Demo on ideone.
如果您需要转换为char*
,而不是const char*
,则复制c_str
-替换最后一行如下:
char *x = new char[res.size()+1];
strcpy(x, res.c_str());
// Use x here, then...
delete[] x;
最后,您可以使用vector而不是string来获得可写指针,而无需进行删除操作。注意,这种方法不允许您从函数返回char*
,因为它的数据将与具有其字符的向量的作用域绑定在一起。下面是该方法的演示:
如果您正在使用c++ 11, std::to_string()是一个不错的选择:
int a = 1;
std::string b = "str";
std::string one = std::to_string(a);
std::string one_plus_b = (one + b);
const char * x = one_plus_b.c_str();
正如其他答案所指出的,'x'只能在局部作用域中使用。
int和std::string转换成char*?
下面是一些单行代码:
char* p = strdup((std::to_string(a) + b).c_str());
...use p...
free(p);
…或者,如果你的系统提供它(我不认为它在c++标准本身)…
char* p = asprintf("%d%s", a, b.c_str());
...use p...
free(p);
请注意,这些都是C库函数,内存分配是malloc
/realloc
/free
-家族,不能与new
/delete
混合(这意味着指针不应该包装在标准智能指针中,尽管当然可以使用free
特定的或通用的作用域保护)。
相关文章:
- 使用char类型将decimal转换为string,将string转换为decimal
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- 如何将带有十六进制值的 std::string 转换为 std::vector<无符号字符>
- 无法从'const std::string [3]'转换为'std::string'
- 从 std::string 转换为 const 无符号整数
- C++ 模板函数无法将"std:string"转换为"double"作为回报
- 将 std::string 转换为 const char* 用于 printf 消耗
- 将 std::string 转换为 const tchar*
- 如何在PHPCPP库中将C++map<string,map<string>>转换为php::value?
- 将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)
- 将 std::string 转换为 wchar_t* 的类型定义
- 在 C++03 中将 std::string 转换为 int
- 将 'hana::string' 转换为 'constexpr const char (&)[]'
- 正确的交叉平台从 std::string 转换为 'const TCHAR *'
- 从矢量<string>转换为wchar_t**
- 将 std::vector<std::string> 转换为 const char* const*
- 将 std::string 转换为 boost::asio::streambuf
- C++ SNAP 库将 std::string 转换为 TStr
- 自动将 std::string 转换为 char* 而无需每次都调用 c_str() 的最佳方法
- 将 std::string 转换为 Swift String