使用循环将字符串拆分为特定长度的子单元

时间:2013-05-23 08:42:13

标签: c++ loops substr

我需要将字符串拆分为特定长度,例如如果用户将其指定为最大长度为4的单位,则循环应在原始输入"0123456789asdf"上运行,以获得"0123""4567""89as""df"

我无法找到最好的方法 - 我需要它在循环中,因为需要在强大的每个子单元上进行进一步的处理。 TIA。

编辑:我不知道原始字符串有多长,我只知道它需要变成的块的大小。另外,我需要指定长度的字符串块,以及包含字符串的余数的最后一个块(如果它小于指定的长度)。

2 个答案:

答案 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"

这里,strstr + 4是指向char数组中字符的指针,它与ForwardIterator概念兼容。 (指针是迭代器)