Счетчик из string C++

286
26 ноября 2016, 18:53

Необходимо реализовать счетчик из числа, записанного в String. Т.е. при каждой итерации цикла стринговое число надо увеличить на 1. Т.е. было "123", после следующей итерации должно стать "124" и т.д.

У меня проблема с разрядами. Вот такой кусок кода у меня увеличивает только от 0 до 9, а как сделать увеличение и добавление нового разряда (десятки, сотни и .т.д) - не знаю.

if(str[(str.size()-1]-'0'< 9)
   str[(str.size()-1]+=1;
Answer 1

Как я понимаю, от человека хотят именно работу со строкой... Тогда - вот:

void inc(string&s)
{
    int l = s.length();
    bool carry = true;
    for(int i = l-1; carry && i >= 0; --i)
    {
        if (carry) s[i]++;
        if (carry = (s[i] > '9')) s[i] = '0';
    }
    if (carry) s = '1' + s;
}
int main(int argc, const char * argv[])
{
    string s = "193";
    for(int i = 0; i < 20; ++i)
    {
        inc(s);
        cout << s << endl;
    }
    s = "993";
    for(int i = 0; i < 20; ++i)
    {
        inc(s);
        cout << s << endl;
    }
}
Answer 2

Можно это сделать следующим образом, как показано в демонстрационной программе

#include <iostream>
#include <string>
int main() 
{
    std::string cnt( "999" );
    std::cout << cnt << std::endl;
    cnt = std::to_string( std::stoul( cnt ) + 1 );
    std::cout << cnt << std::endl;
    return 0;
}

Вывод программы на консоль:

999
1000
READ ALSO
Свойства объекта в С++

Свойства объекта в С++

Есть 2 лампочкиУ каждой есть 2 состояния - активная(горит) и пассивная(цвет лампочки - черный)

275
Вопрос по С++, нужна помощь [требует правки]

Вопрос по С++, нужна помощь [требует правки]

Вопрос по С++ и надо решить с использования двумерные массивы

209
Рендеринг текста при css трансформации

Рендеринг текста при css трансформации

Есть некоторый текст, который развернут на 90deg

527
Как подогнать все блоки под высоту самого высокого Bootstrap

Как подогнать все блоки под высоту самого высокого Bootstrap

Я делаю блог на WordPressЕсть вывод постов, но за счет картинки, названия, превью все блоки в линии разной высоты и это бросается в глаза

432