我需要将字符串拆分为特定长度,例如,如果用户将其指定为最大长度为 4 的单位,则循环应在原始输入上运行"0123456789asdf"
以获取"0123"
, "4567"
, "89as"
, "df"
。
我真的想不出最好的方法来做到这一点——我需要它处于一个循环中,因为需要对强的每个子单元进行进一步的处理。TIA。
编辑:我不知道原始字符串有多长,我只知道它需要变成的块的大小。另外,我需要指定长度的字符串块,以及包含字符串其余部分的最后一个块(如果它小于指定长度)。
string str("0123456789asdf");
for (unsigned i = 0; i < str.length(); i += 4) {
cout << str.substr(i, 4) << endl;
}
std::string
可以将范围作为其构造函数参数(构造函数 6)。用它:
char const str[] = "0123456789asdf";
std::string x(str, str + 4); // "0123"
在这里,str
和str + 4
是指向字符数组中的字符的指针,它们与ForwardIterator
概念兼容。(指针是迭代器)