如何从int转换为char *?
我知道的唯一方法是:
#include <sstream> #include <string.h> using namespace std; int main() { int number=33; stringstream strs; strs << number; string temp_str = strs.str(); char* char_type = (char*) temp_str.c_str(); }
但有没有更less的打字方法?
-
在C ++ 11中,使用
std::to_string
作为:std::string s = std::to_string(number); char const *pchar = s.c_str(); //use char const* as target type
-
而在C + + 03中,你在做什么只是很好,除了使用
const
为:char const* pchar = temp_str.c_str(); //dont use cast
你可以使用提升
#include <boost/lexical_cast.hpp> string s = boost::lexical_cast<string>( number );
我想你可以使用sprintf:
int number = 33; char* numberstring[(((sizeof number) * CHAR_BIT) + 2)/3 + 2]; sprintf(numberstring, "%d", number);
C风格的解决scheme可以使用itoa
,但更好的方法是使用sprintf
/ snprintf
将此数字打印到string中。 检查这个问题: 如何将整数转换为可移植的string?
请注意, itoa
函数没有在ANSI-C中定义,也不是C ++的一部分,但是由一些编译器支持。 这是一个非标准的function,所以你应该避免使用它。 检查这个问题: 替代itoa()将整数转换为stringC ++?
还要注意,用C ++编写C风格的代码被认为是不好的做法,有时被称为“可怕的风格”。 你真的想把它转换成C风格的string? 🙂
我不会在最后一行注释掉const,因为这是有原因的。 如果你不能忍受一个const char *那么你最好复制char数组,如:
char* char_type = new char[temp_str.length()]; strcpy(char_type, temp_str.c_str());
你也可以使用铸造。
例:
string s; int value = 3; s.push_back((char)('0' + value));
看到这个答案https://stackoverflow.com/a/23010605/2760919
对于你的情况,只需将snprintf中的types从long(“%ld”)更改为int(“%n”)即可。