首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >标准模板字符串类: string.fill()

标准模板字符串类: string.fill()
EN

Stack Overflow用户
提问于 2009-10-15 22:39:23
回答 2查看 9.1K关注 0票数 6

我需要一种方法来创建n个字符的字符串。在这种情况下,ascii值为零。

我知道我可以通过调用构造函数来实现:

string sTemp(125000,'a');

但是我想在很多地方重用sTemp,并用不同的长度填充它。

我正在调用一个库,它将字符串指针和长度作为参数,并用字节填充字符串。(我知道从技术上讲,字符串不是连续的,但实际上它是连续的,而且很可能很快就会成为标准)。我不想使用向量。

有没有什么聪明的方法可以在字符串创建后再次调用构造函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-15 22:49:30

string类提供了方法assign,用于为给定的字符串分配一个新值。签名是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1. string& assign ( const string& str );
2. string& assign ( const string& str, size_t pos, size_t n );
3. string& assign ( const char* s, size_t n );
4. string& assign ( const char* s );
5. string& assign ( size_t n, char c );
6. template <class InputIterator> 
     string& assign ( InputIterator first, InputIterator last );

引用来源:cplusplus.com (我推荐这个网站,因为它为您提供了一个非常详细的C++标准库参考资料。)

我认为您正在寻找类似于这些函数中的第五个函数:n指定所需的字符串长度,c指定填充到此字符串中的字符。例如,如果您编写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sTemp.assign(10, 'b');

您的字符串将仅填充10个b。

我最初建议使用STL算法std::fill,但这样您的字符串长度保持不变。string::resize方法提供了一种更改字符串大小的方法,并用给定值填充附加的字符--但只设置了附加的字符。最后,string::assign仍然是最好的方法!

票数 12
EN

Stack Overflow用户

发布于 2009-10-15 22:51:03

尝试使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sTemp.resize(newLength, 'a');

参考文献:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void __CLR_OR_THIS_CALL resize(size_type _Newsize)
    {   // determine new length, padding with null elements as needed
    resize(_Newsize, _Elem());
    }

void __CLR_OR_THIS_CALL resize(size_type _Newsize, _Elem _Ch)
    {   // determine new length, padding with _Ch elements as needed
    if (_Newsize <= _Mysize)
        erase(_Newsize);
    else
        append(_Newsize - _Mysize, _Ch);
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1576460

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文