C++ 将c+中的整数转换为字符串+;
这是我编写的将整数转换为字符串的代码C++ 将c+中的整数转换为字符串+;,c++,string,C++,String,这是我编写的将整数转换为字符串的代码 #include <iostream> using namespace std; int main() { string s; int b=5; s.push_back((char)b); cout<<s<<endl; } #包括 使用名称空间std; int main() { 字符串s; int b=5; s、 推回((字符)b); cout数字的字符代码不等于典型系统中字符所代表的整数
#include <iostream>
using namespace std;
int main()
{
string s;
int b=5;
s.push_back((char)b);
cout<<s<<endl;
}
#包括
使用名称空间std;
int main()
{
字符串s;
int b=5;
s、 推回((字符)b);
cout数字的字符代码不等于典型系统中字符所代表的整数
授权十进制数字的字符代码是连续的(2.3个字符集,第3段),因此您可以添加'0'
以将一个数字转换为字符
#include <iostream>
using namespace std;
int main()
{
string s;
int b=5;
s.push_back((char)(b + '0'));
cout<<s<<endl;
}
#包括
使用名称空间std;
int main()
{
字符串s;
int b=5;
s、 推回((字符)(b+0');
cout您正在将整数5解释为字符。在ASCII编码中,5是查找时的查询控制字符
另一方面,字符5由十进制数字53表示。正如其他人所说,您不能以这样的方式将整数转换为字符串
IMHO,最好的方法是使用C++11方法
你的例子可以转化为:
using namespace std;
int main()
{
string s;
int b=5;
s = to_string(b);
cout<<s<<endl;
}
使用名称空间std;
int main()
{
字符串s;
int b=5;
s=至_字符串(b);
cout此外,您可以使用,
STD::在我国GCC > P >字符串不适用,如果我们在2016从头开始写C++,也许我们会做这件事,但是它选择的是(大部分)与C等相当低级的语言向后兼容,'char'
实际上只是一个数字,字符串/打印算法将其解释为一个字符,但大多数语言都不处理特殊字符。包括cast。因此,通过执行(char)
,您只转换了一个32位带符号的数字(int
)到8位有符号数字(char
)
然后在打印时将其解释为一个字符,因为打印函数确实对其进行特殊处理。但它打印出来的值不是'5'
。对应关系是常规的,完全任意的;第一个数字保留给特殊代码,这些代码可能已经过时。正如霍夫曼指出的,位值5
是查询的代码
(无论它是什么意思),而要打印'5'
字符必须包含53
的值。要打印一个合适的空格,你需要输入32
。它没有任何意义,除非有人在几十年前的某个时候认为这和任何东西一样好,而且这个惯例仍然存在
如果你需要知道其他字符和值,你需要的是一个“ASCII表”。只要用谷歌搜索一下,你会发现很多
你会注意到,同一大小写的数字和字母按照你期望的顺序排列在一起,因此至少有一些逻辑。但是,要注意,这通常不是直观的:例如,大写字母在小写字母之前,所以'A'<'A'
我想您已经开始明白为什么字符串使用专用系统函数更好了!代码中的问题是您正在将整数5转换为ASCII(=>ENQ ASCII代码,它是不“可打印的”)。
要将其正确转换为ASCII,必须添加ASCII代码“0”(48),以便:
但是,要将整数转换为std::string,请使用:
std::stringstream ss; //from <sstream>
ss << 5;
std::string s = ss.str ();
std::stringstream ss;//来自
ss它可能不是一个空格。查看一个ASCII表:我非常怀疑“ENQ”是否是多余的。这些控制字符用于控制设备之间的信息流和消息确认,尽管当前的协议(http、ftp等)是什么使用我不知道。据我记忆所及,40多年前,ENQ被用于投标一个通信信道,STX表示消息的开始,ETX表示消息的结束,ACK表示消息已正确接收,NAK表示未正确接收,SYN表示同步等。因此,ASCII“0”是十六进制30,空格是十六进制20,字母是让我们开始像这样的转换,我有一个书签
std::stringstream ss; //from <sstream>
ss << 5;
std::string s = ss.str ();
template <typename T>
std::string toString (T arg)
{
std::stringstream ss;
ss << arg;
return ss.str ();
}