我知道有一种方法可以在声明字符串时将重复n次的特定字符的值赋给字符串,就像这样:
string example(int, char);
但是如果我一开始没有给它一个值,以后可以使用重复字符函数吗?
我试着这样做,但它没有工作:
string example;
example(int, char);
我得到了这个错误"调用类类型的对象,没有适当的操作符()或转换函数到指针到函数类型">
你不能完全做到这一点,但这里有一个最好的办法。如果需要增加/减少大小,可以使用std::string::resize()
,它有第二个参数来填充新的char
s。所以试试这个:
std::string foo;
foo.resize(10, 'A');
std::cout << foo << 'n';
输出为:AAAAAAAAAA
但是,请注意,如果您尝试这样做:
std::string a = "a";
a.resize(2, 'A');
a
将变成"aA"
,因为它不覆盖前面的字符,只覆盖新的空字符。要覆盖前面的,您可以使用std::fill
:
std::string a = "aaa";
std::fill(a.begin(), a.end(), 'A');
它会变成"AAA"
[EDIT]正如@churill所说,重用构造函数a = std::string(10, 'A')
也会将字符串的值设置为"AAAAAAAAAA"
,所以如果您不介意丢失之前的值,您可以将此作为更简单的方法使用。