8

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

我真的想不出最好的方法来做到这一点——我需要它处于一个循环中,因为需要对强的每个子单元进行进一步的处理。TIA。

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

4

2 回答 2

27
string str("0123456789asdf");

for (unsigned i = 0; i < str.length(); i += 4) {
    cout << str.substr(i, 4) << endl;
}
于 2013-05-23T08:52:27.327 回答
0

std::string可以将范围作为其构造函数参数(构造函数 6)。用它:

char const str[] = "0123456789asdf";
std::string x(str, str + 4); // "0123"

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

于 2013-05-23T08:43:47.207 回答