我需要一种方法来创建一个包含 n 个字符的字符串。在这种情况下,ascii 值为零。
我知道我可以通过调用构造函数来做到这一点:
字符串 sTemp(125000, 'a');
但我想在很多地方重用 sTemp 并用不同的长度填充它。
我正在调用一个以字符串指针和长度作为参数并用字节填充字符串的库。 (我知道从技术上讲,字符串不是连续的,但就所有意图和目的而言,它是连续的,并且很快就会成为标准)。我不想使用 vector 。
有没有什么巧妙的方法可以在创建字符串后再次调用构造函数?
最佳答案
string
类提供了方法assign
来为给定的字符串分配一个新值。签名是
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
指定填充到该字符串中的字符。例如,如果你写
sTemp.assign(10, 'b');
您的字符串将只填充 10 个 b。
我最初建议使用 STL 算法 std::fill
但因此您的字符串长度保持不变。 string::resize
方法提供了一种更改字符串大小并用给定值填充附加字符的方法——但仅设置附加字符。最后,string::assign
仍然是最好的方法!
关于c++ - 标准模板字符串类 : string. fill(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576460/