将int转换为字符串的最短路径是什么,最好是内联的?使用stl和boost的答案将受到欢迎。
答案 0 :(得分:314)
您可以在C ++ 11中使用std::to_string
int i = 3;
std::string str = std::to_string(i);
答案 1 :(得分:45)
#include <sstream>
#include <string>
const int i = 3;
std::ostringstream s;
s << i;
const std::string i_as_string(s.str());
答案 2 :(得分:36)
boost::lexical_cast<std::string>(yourint)
的 boost/lexical_cast.hpp
使用std :: ostream支持工作,但速度不如itoa
它甚至看起来比stringstream或scanf更快:
答案 3 :(得分:30)
众所周知的方法是使用流操作符:
#include <sstream>
std::ostringstream s;
int i;
s << i;
std::string converted(s.str());
当然,您可以使用模板函数^^
对任何类型进行概括#include <sstream>
template<typename T>
std::string toString(const T& value)
{
std::ostringstream oss;
oss << value;
return oss.str();
}
答案 4 :(得分:14)
如果您不能使用C ++ 11中的std::to_string
,您可以按照cppreference.com上的定义编写它:
std::string to_string( int value )
将带符号的十进制整数转换为一个字符串,其内容与std::sprintf(buf, "%d", value)
为足够大的buf产生的内容相同。
实施
#include <cstdio>
#include <string>
#include <cassert>
std::string to_string( int x ) {
int length = snprintf( NULL, 0, "%d", x );
assert( length >= 0 );
char* buf = new char[length + 1];
snprintf( buf, length + 1, "%d", x );
std::string str( buf );
delete[] buf;
return str;
}
你可以用它做更多的事情。只需使用"%g"
将float或double转换为字符串,使用"%x"
将int转换为十六进制表示,依此类推。
答案 5 :(得分:13)
非标准功能,但它在大多数常见编译器上实现:
int input = MY_VALUE;
char buffer[100] = {0};
int number_base = 10;
std::string output = itoa(input, buffer, number_base);
<强>更新强>
C ++ 11引入了几个std::to_string
重载(注意它默认为base-10)。
答案 6 :(得分:8)
以下宏不像一次性使用ostringstream
或boost::lexical_cast
那么紧凑。
但是如果你需要在你的代码中重复转换为字符串,那么这个宏在使用上比直接处理字符串流或每次显式转换都更优雅。
非常多才多艺,因为它可以转换operator<<()
支持的所有,即使是组合使用。
定义:
#include <sstream>
#define SSTR( x ) dynamic_cast< std::ostringstream & >( \
( std::ostringstream() << std::dec << x ) ).str()
<强>解释强>
std::dec
是一种无副作用的方式,可以将匿名ostringstream
转换为通用ostream
,因此operator<<()
函数查找可以正常运行所有类型。 (如果第一个参数是指针类型,则会遇到麻烦。)
dynamic_cast
会将类型返回ostringstream
,因此您可以在其上调用str()
。
使用:
#include <string>
int main()
{
int i = 42;
std::string s1 = SSTR( i );
int x = 23;
std::string s2 = SSTR( "i: " << i << ", x: " << x );
return 0;
}
答案 7 :(得分:0)
您可以在项目中包含itoa的实施 这是itoa修改为使用std :: string:http://www.strudel.org.uk/itoa/
答案 8 :(得分:0)
在包含VarDeclaration: VAR VarSpec
| ID Type
| ID COMMA ID auxVarSpec Type
之后,您可以使用此功能将int
转换为std::string
:
<sstream>
答案 9 :(得分:-2)
假设我有integer = 0123456789101112
。现在,这个整数可以由stringstream
类转换为字符串。
以下是C ++中的代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,i;
string s;
stringstream st;
for(i=0;i<=12;i++)
{
st<<i;
}
s=st.str();
cout<<s<<endl;
return 0;
}
答案 10 :(得分:-2)
#include <string>
#include <stdlib.h>
这是将int转换为字符串的另一种简单方法
int n = random(65,90);
std::string str1=(__String::createWithFormat("%c",n)->getCString());
您可以访问此链接以获取更多方法 https://www.geeksforgeeks.org/what-is-the-best-way-in-c-to-convert-a-number-to-a-string/