最优雅的方法,用另一个字符串中的单个字符初始化字符串

Hor*_*Fat 1 c++ string char

是否有更优雅的方法使用第一个字符串中的单个字符串初始化第二个字符串?例如.没有求助于字符串(size_t n,char c)构造函数?

string first = "foobar";
string second(string(1, first[0]));
Run Code Online (Sandbox Code Playgroud)

Mik*_*our 9

你提到的构造函数从一个角色创建一个字符串的方法,所以没有一个更优雅的方式.但是,没有必要创建和复制/移动临时:

string second(1, first[0]);
Run Code Online (Sandbox Code Playgroud)

或者,您可以从以下子字符串构造first:

string second(first, 0, 1);
Run Code Online (Sandbox Code Playgroud)

在C++ 11中,您可以使用初始化列表:

string second {first[0]};
Run Code Online (Sandbox Code Playgroud)


Luc*_*ore 6

关于什么:

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
Run Code Online (Sandbox Code Playgroud)

string second(1, first[0]);
Run Code Online (Sandbox Code Playgroud)

请注意,以上是您初始化的唯一选项.

  • 我没有downvote,但我认为这是因为问题是"不使用字符串(size_t n,char c)构造函数?" (2认同)