Почему моя строковая функция ничего не возвращает? - PullRequest
1 голос
/ 27 мая 2019

Либо функция ничего не возвращает, либо возвращает пустую строку.Я пытаюсь стереть все до следующей последовательности после текста -e в строке.Например, test -e test/file/path должен возвращать test/file/path без пробела после -e.Однако, когда функция ничего не возвращает или возвращает пустую строку.Я не могу найти что-то не так с моей функцией, пожалуйста, помогите!

#include <iostream>
using namespace std;

string fileparse(string str) {
    int i;

    for (i = 0; i < str.size(); i++)
        if (str[i] == '-')
            i += 2; //to account for the space after 'e'
    str.erase(str.begin(), str.begin()+i);
    return str;
}

int main()
{

    string str = "test -e test/file/path";
    string vars = fileparse(str);
    cout << vars << endl; //blank
    return 0;
}

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Вы должны выйти из цикла for, потому что вы даете ему закончить, а 'i' увеличивается. Затем, когда вы ссылаетесь на «i», он удаляет всю строку.

0 голосов
/ 27 мая 2019
if (str[i] == '-') {
     i += 3;
     break;
}

Останавливается при обнаружении символа '-'. Избавление от i увеличивается на 1, а избавление от буквы e и одного пробела на 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...