如何在visual c ++中将整数转换为字符串指针?
答案 0 :(得分:4)
使用stringstream
#include <sstream>
stringstream ss;
ss << i;
string s = ss.str();
答案 1 :(得分:2)
在您喜欢的文档中搜索atoi / itoa。或者尝试Boost(www.boost.org - 库转换,lexical_cast)。
这两种方式都可以在不同的编译器中移植。
答案 2 :(得分:2)
有一种非常简单的方法
int i=4;
String ^ s = Convert::ToString(i);
答案 3 :(得分:1)
如果您想要指针地址的文本表示,请使用sprintf。 如果要将数值视为指向字符串的指针,请使用如下所示的转换:
int intValue = ...; char * charPtr = (char*)intValue;
答案 4 :(得分:1)
如果使用CString,则可以使用如下的Format()方法:
int val = 489;
CString s;
s.Format("%d", val);
答案 5 :(得分:1)
学习任何C和C ++教科书。这个简单的C代码应该在Visual C ++和其他C ++中编译并将489转换为“489”:
char result[100];
int num = 489;
sprintf(result, "%d", num);
答案 6 :(得分:0)
基本C ++
char text[100];
int num=123;
itoa(num,text,10);
答案 7 :(得分:0)
这就是我在作业中的表现,因为我们只允许使用一些预定的库。我很确定它不被认为是“最佳实践”;)
string int2string(int integer) {
string str;
int division = integer;
while (division > 0) {
str = char('0' + (division % 10)) + str;
division = division / 10;
}
return str;
}
答案 8 :(得分:0)
我认为最简单的是:
int i;
String s=i.toString();
// It is about Visual C++
答案 9 :(得分:-1)
#ifdef __cplusplus
static inline char *int2a_put(uintptr_t i, char *s)
{
do {
*s++ = '0' + i % 10;
i /= 10;
} while (i);
return s;
}
static inline void int2a_reverse(char *head, char *tail)
{
for (*tail = '\0'; --tail > head; ++head) {
/* exchange */
(*head) ^= (*tail);
(*tail) ^= (*head);
(*head) ^= (*tail);
}
}
template<typename t>
static inline const char *int2a(t i, char *s)
{
char *p;
char *ret = s;
bool f = false;
p = s;
if (i < 0) {
*p++ = '-';
++ s;
/*
* In limits.h, INT_MAX was defined as
* maximum values a `signed int' can hold.
* and LONG_MAX was defined as maximum values
* a `signed long int' can hold.
*/
switch (sizeof(t)) {
case 8:
{
/*
* Inject \p a to prevent from complaint
* of compiler.
*/
ef64_t a = (ef64_t)i;
if (-LLONG_MAX > a) {
i = (t)LLONG_MAX;
f = true;
}
}
break;
case 4:
case 2:
case 1:
{
/*
* Inject \p a to prevent from complaint
* of compiler.
*/
int a = (int)i;
if (-INT_MAX > a) {
i = (t)INT_MAX;
f = true;
}
}
break;
default:
break;
}
if (!f) {
i = -i;
}
}
p = int2a_put((uintptr_t)i, p);
if (f) {
++ *s;
}
int2a_reverse(s, p);
return ret;
}
/*
* No "static" otherwise g++ complains
* "explicit template specialization cannot have a storage class"
*/
template<>
/*static*/ inline
const char *int2a<uintptr_t>(uintptr_t i, char *s)
{
char *p = int2a_put(i, s);
int2a_reverse(s, p);
return s;
}
#else