C++中如何将int或者char转化为string类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中如何将int或者char转化为string类相关的知识,希望对你有一定的参考价值。

具体代码这这样滴,我想模拟银行账户acount,std::string类型,这个账户有19位数字,每个数字通过随机数产生并转化为string类型接在acconut的末端:
for(int i=0;i<19;i++)

int j=rand()%10;
this->account.append(j); //这里有错

std::cout<<"您的账号是:"<<this->account<<"\n";
注意我只想把int类型的如 1 转化为 string类型的 ”1“,不通过ASCII等值转化哦,请高手帮忙啊!
account是std::stirng类型,里面的字符全是数字,如”22223345959595“等。问题是我如何把int类型的数字1直接转成string类型的”1”,这样才能往account上接哦!

参考技术A CString::Foramt()函数可以格式化字符串到CString对象中
CString str;
str.format("%d",i);

char转CString的话
eg: char recvBuf[200]
CString str;
str=(char*)recvBuf;

实际上将char型强制转换成CString就可以使用了
参考技术B for(int i=0;i<19;i++)

int j=rand()%10;
char s[5];
sprintf(s,"%d",j);
this->account.append(s);
本回答被提问者采纳
参考技术C C++中有专门互相转换的函数~~~

整形转字符型是这样的:
********************************************************
表头文件:#include<stdlib.h>

实现函数:string itoa(const int *nptr,int **endptr);

C++ 将 int 和 string 转换为 char*

【中文标题】C++ 将 int 和 string 转换为 char*【英文标题】:C++ convert int and string to char* 【发布时间】:2009-11-19 20:03:34 【问题描述】:

这有点难,我想不通。

我有一个 int 和一个字符串,我需要将它存储为 char*,int 必须是十六进制

int a = 31;
string str = "a number";

我需要用制表符将两者分开放入 char* 中。

输出应该是这样的:

1F      a number

【问题讨论】:

注意:我不需要以那种格式打印。我能做到。我有一个以 char* 作为参数的函数。我需要对其进行转换,以便将其用于该功能 【参考方案1】:

适当的包括:

#include <sstream>
#include <ostream>
#include <iomanip>

类似这样的:

std::ostringstream oss;
oss << std::hex << a << '\t' << str << '\n';

从以下位置复制结果:

oss.str().c_str()

请注意,c_str 的结果是一个临时的(!)const char*,因此如果您的函数采用char *,您将需要在某处分配一个可变副本。 (也许将其复制到std::vector&lt;char&gt;。)

【讨论】:

【参考方案2】:

试试这个:

int myInt = 31;
const char* myString = "a number";
std::string stdString = "a number";

char myString[100];

// from const char*
sprintf(myString, "%x\t%s", myInt, myString);

// from std::string   :)
sprintf(myString, "%x\t%s", myInt, stdString.c_str());

【讨论】:

std::string 开头,而不是const char * 任何允许链接到 C 运行时的现代 C++ 编译器都将编译此代码(Jacob 的代码以 Windows 为中心,但仍适用于该平台)。我个人一直讨厌 C++ I/O 库中重载的 【参考方案3】:
#include <stdio.h>

char display_string[200];
sprintf(display_string,"%X\t%s",a,str.c_str());

我使用sprintf 将您的号码格式化为十六进制。

【讨论】:

要求用制表符分隔,而不是空格。 好吧,OP 想使用char*,因此sprintf 不是那么没有根据! Jacob 将答案更新为使用sprintf。从什么时候开始在 C++ 代码中使用非法的 C 库函数? @Kristo:我同意,尤其是因为我仍然发现使用 iostreams 进行格式化阅读起来更加痛苦(甚至一开始就正确)。但是,我认为应该考虑使用snprintf() 而不是sprintf() 是的,在 C++ 中使用 C 函数通常要容易得多。不管它是否“好的做法”……不管这意味着什么。【参考方案4】:

str.c_str() 将返回一个以 null 结尾的 C 字符串。

注意:没有回答主要问题,因为您的评论表明没有必要。

【讨论】:

【参考方案5】:

那些写 "const char* myString = "a number";" 的人 只是糟糕的程序员。无法获得 C 基础知识 - 他们急于进入 C++ 并开始谈论他们不理解的事情。

"const char *" 类型是一个指针。 “一个数字” - 是数组。你混合指针和数组。是的,C++ 编译器有时允许管道类型。但是您还必须了解-如果您进行管道打字而不了解您的“电导率”在哪里-您的所有程序都只是胶带。

【讨论】:

以上是关于C++中如何将int或者char转化为string类的主要内容,如果未能解决你的问题,请参考以下文章

c++如何将vector<char>转化成string

c++中如何将一个字符串转化成数组

怎样将object转化为char

如何将C++中string类型的字符串赋给unsigned char数组

C++里把char转化为string怎么解决

c#中怎么将string转化为枚举