我的目标是获取一个非常大的数字的特定部分,并将该部分与另一个数字连接起来,然后继续。由于整数只有这么高,我有一个数字的字符串。我不知道这个号码是什么,所以我不能自己输入。我可以在第一部分使用substr,但我很快就被卡住了。
一个例子
“435509590420924949”
我想取出前5个字符,转换为整数,对它们进行自己的计算,然后将它们与字符串的其余部分连接起来。所以我将43550拿出来,做公式得到49,然后在原始字符串“95904”之后将49加到另外5个所以新答案将是“4995904”。
这是我编写的第一部分的代码,
string temp;
int number;
temp = data.substr(0, 5);
number = atoi(temp.c_str());
这会抓取字符串中的前几个第一个字符,转换为我可以计算它的整数,但我不知道如何获取长字符串的下一个5。
答案 0 :(得分:0)
您可以获取字符串的长度,例如:
std::size_t startIndex = 0;
std::size_t blockLength = 5;
std::size_t length = data.length();
while(startIndex < length)
{
std::string temp = data.substr(startIndex, blockLength);
// do something with temp
startIndex += blockLength;
// TODO: this will skip the last "block" if it is < blockLength,
// so you need to modify it a bit for this case.
}
答案 1 :(得分:0)
您可以使用循环。例如:
std::size_t subStrSize = 5;
for (std::size_t k = 0; k < data.size(); k+=subStrSize) {
std::size_t h = std::min(k + subStrSize - 1, data.size() - 1);
int number = 0;
for (std::size_t l = k; l <= h; ++l)
number = number * 10 + data[l] - '0';
//-- Some work with number --
}