c++ - 如何使用 string(int, char) 函数为声明的字符串添加或更改值?
问题描述
我知道有一种方法可以在声明字符串时将重复 n 次的特定字符的值赋予字符串,如下所示:
string example(int, char);
但是如果我一开始没有给它一个值,那以后可以使用重复字符函数吗?
我试过这样做,但没有奏效:
string example;
example(int, char);
我收到此错误“在没有适当的 operator() 或将函数转换为指针函数类型的情况下调用类类型的对象”
解决方案
你不能完全做到这一点,但这是下一个最好的事情。如果需要增加/减少大小,可以使用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"
,因此如果您不介意丢失先前的值,则可以将其用作更简单的方法。
推荐阅读
- python - 混淆二进制字符串中的位数(Python)
- javascript - 在不刷新页面的情况下重置图像裁剪器很热?
- powershell - 获取在某个日期之后创建的所有 AD 计算机
- java - Arraylist 输出重复
- anylogic - 如何创建与旧版本兼容的 anylogic 文件的副本?
- loops - Ansible Hosts 在剧本中循环
- google-apps-script - 加载的 Google 表格上的程序化弹出窗口?
- kubernetes - 负载均衡器服务故障排除
- docker - Docker redis 需要传入配置和健康检查
- php - sql查询中的多个where条件