首页 > 解决方案 > 如何使用 string(int, char) 函数为声明的字符串添加或更改值?

问题描述

我知道有一种方法可以在声明字符串时将重复 n 次的特定字符的值赋予字符串,如下所示:

string example(int, char);

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

我试过这样做,但没有奏效:

string example;
example(int, char);

我收到此错误“在没有适当的 operator() 或将函数转换为指针函数类型的情况下调用类类型的对象”

标签: c++string

解决方案


你不能完全做到这一点,但这是下一个最好的事情。如果需要增加/减少大小,可以使用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".

[编辑] 正如@churill 所说,重用构造函数a = std::string(10, 'A')也会将字符串的值设置为"AAAAAAAAAA",因此如果您不介意丢失先前的值,则可以将其用作更简单的方法。


推荐阅读