Lyn*_*Dev 4 c++ string casting numbers c++11
来自C#背景,C#我可以这样写:
int int1 = 0;
double double1 = 0;
float float1 = 0;
string str = "words" + int1 + double1 + float1;
Run Code Online (Sandbox Code Playgroud)
..和字符串的转换是隐含的.在C++我理解的情况下,演员必须是明确的,我想知道问题通常是由C++程序员解决的?
我已经知道网上有很多信息,但似乎有很多方法可以做到,我想知道是否没有标准的做法?
如果你要编写上面的代码C++,你会怎么做?
C++中的字符串只是字节的容器,所以我们必须依靠额外的功能来为我们做这件事.
在C++ 03的旧时代,我们通常使用I/O流的内置词法转换工具(通过格式化输入):
int int1 = 0;
double double1 = 0;
float float1 = 0;
std::stringstream ss;
ss << "words" << int1 << double1 << float1;
std::string str = ss.str();
Run Code Online (Sandbox Code Playgroud)
您可以使用各种I/O操纵器来微调结果,就像在sprintf格式字符串中一样(它仍然有效,并且仍然可以在某些C++代码中看到).
还有其他方法,它们自己转换每个参数然后依赖于连接所有结果字符串.boost::lexical_cast提供这个,就像C++ 11一样to_string:
int int1 = 0;
double double1 = 0;
float float1 = 0;
std::string str = "words"
+ std::to_string(int1)
+ std::to_string(double1)
+ std::to_string(float1);
Run Code Online (Sandbox Code Playgroud)
后一种方法不给你过任何控制如何,数据表示,尽管(演示).