在c ++中,如何从字符串中获取下几个字符?

时间:2016-09-12 23:10:34

标签: c++ string integer concatenation

我的目标是获取一个非常大的数字的特定部分,并将该部分与另一个数字连接起来,然后继续。由于整数只有这么高,我有一个数字的字符串。我不知道这个号码是什么,所以我不能自己输入。我可以在第一部分使用substr,但我很快就被卡住了。

一个例子

“435509590420924949”

我想取出前5个字符,转换为整数,对它们进行自己的计算,然后将它们与字符串的其余部分连接起来。所以我将43550拿出来,做公式得到49,然后在原始字符串“95904”之后将49加到另外5个所以新答案将是“4995904”。

这是我编写的第一部分的代码,

string temp;
int number;

temp = data.substr(0, 5);
number = atoi(temp.c_str());

这会抓取字符串中的前几个第一个字符,转换为我可以计算它的整数,但我不知道如何获取长字符串的下一个5。

2 个答案:

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