是否有更优雅的方法使用第一个字符串中的单个字符串初始化第二个字符串?例如。没有求助于字符串(size_t n,char c)构造函数?
string first = "foobar";
string second(string(1, first[0]));
答案 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)