有没有更优雅的方法用第一个字符串中的单个字符初始化第二个字符串?例如。不求助于字符串 ( size_t n, char c ) 构造函数?
string first = "foobar";
string second(string(1, first[0]));
您提到的构造函数是从一个字符创建字符串的方法,因此不会有明显更优雅的方法。但是,无需创建和复制/移动临时文件:
string second(1, first[0]);
或者,您可以从以下子字符串构造first
:
string second(first, 0, 1);
在 C++11 中,您可以使用初始化列表:
string second {first[0]};
关于什么:
string ( );
string ( const string& str );
string ( const string& str, size_t pos, size_t n = npos );
string ( const char * s, size_t n );
string ( const char * s );
string ( size_t n, char c ); //<<--- this
IE
string second(1, first[0]);
请注意,以上是您唯一的初始化选项。
我建议你:
string first = "foobar";
string second;
second = first[0];