Дублирование чисел в wstring

111
28 декабря 2020, 23:00

Необходимо продублировать все числа в строке, помогите исправить баг с бесконечным добавлением первого найденного числа

void repeatElem(std::wstring str) { // Дублирование чисел.
    for(int i=0;i<10;) {
        int n = str.find(std::to_wstring(i));
        if (n>=0) str.insert(n, std::to_wstring(i));
        else i++;
    }
    std::wcout << std::endl << L"" << str;
}
Answer 1

У тебя здесь 2 вложенных итерации: 1я - по числам, 2я - по строке Вырази их явно, и всё получится. :)

Ну и кроме того, в сигнатуре ошибка. Изменения будут не видны снаружи функции. Так что нужно передавать строку по ссылке, или вернуть изменённую копию.

void repeatElem(std::wstring& str) { // Дублирование чисел.
  const std::wstring number = std::to_wstring(i)
  for (int i=0; i<10; ++i) {
    for (int n = 0; n != std::wstring::npos && n < str.size();) {
      n = str.find(number, n);
      if (n != std::wstring::npos) {
        str.insert(n, number);
        n += 2;
      }
    }
  }
}
READ ALSO
pts и вычисление времени видео

pts и вычисление времени видео

1Пытаюсь вычислить текущее время видео и получаю ошибку: pts не является членом "AVStream"

95
*.VC.db в проекте Visual Studio

*.VC.db в проекте Visual Studio

В проекте есть *VC

139