如何使用string(int, char)函数为声明的字符串添加或更改值?



我知道有一种方法可以在声明字符串时将重复n次的特定字符的值赋给字符串,就像这样:

string example(int, char);

但是如果我一开始没有给它一个值,以后可以使用重复字符函数吗?

我试着这样做,但它没有工作:

string example;
example(int, char);

我得到了这个错误"调用类类型的对象,没有适当的操作符()或转换函数到指针到函数类型">

你不能完全做到这一点,但这里有一个最好的办法。如果需要增加/减少大小,可以使用std::string::resize(),它有第二个参数来填充新的chars。所以试试这个:

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",所以如果您不介意丢失之前的值,您可以将此作为更简单的方法使用。

最新更新