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