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

时间:2012-07-13 16:04:30

标签: c++ string char

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

string first = "foobar";
string second(string(1, first[0]));

4 个答案:

答案 0 :(得分:9)

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

string second(1, first[0]);

或者,您可以从first

的子字符串构造
string second(first, 0, 1);

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

string second {first[0]};

答案 1 :(得分: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

string second(1, first[0]);

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

答案 2 :(得分:1)

我建议你:

string first = "foobar";
string second;
second = first[0];

答案 3 :(得分:0)

自C ++ 11起,您可以将初始化程序列表用于大多数紧凑语法:

string first = "foobar";
string second{first[0]};

See it online