(С++)написал функцию для поиска слова в строке, функция возвращает слово (result). входные данные: hello world

#include <iostream>
#include <string>
#include <cmath>
using namespace std;
string getword(string source, unsigned short int number) {
    string result;
    unsigned short int counter = 0;
    unsigned short int start = 0;
    unsigned short int stop = 0;
    for (unsigned short int i = 0; i < source.size(); i++) {
        if (source[i] == ' ') {
            stop = i;
            counter++;
            if (counter == number) {
                unsigned short int a = 0;
                unsigned short int b = start;
                while (b < stop) {
                    result[a] = source[b];
                    a++;
                    b++;
                }
            }
            else {
                start = stop + 1;
            }
        }
    }
    return result;
}
int main() {
    string temp;
    getline(cin, temp);
    cout<<getword(temp, 1);
    system("pause");
    return 0;
}

Ответы (1 шт):

Автор решения: AR Hovsepyan

У std::string есть соответствующие функции_члены для поиска, используйте их:

string getword(const string& source, unsigned short number)
{   
    size_t start = source.find_first_not_of(' '),
    pos = start;
    //пропустили ведущие пробелы, ищем нужную позицию 
    while ( start != source.npos && number--) {
        start = source.find_first_not_of(' ', pos);
        if (start == source.npos)   return "";
        pos = source.find(' ', start);
    }       
    return source.substr(start, pos - start);
}

В функцию строку нужно передавать по константной ссылке, чтобы не копировать и для возможности передать временный объект или литерал. Второй аргумент можно передать по значению(копию), чтобы в функции не объявлять еще один объект. Ваша функция не выдает результат, поскольку условие не выполняется, и ваша строка остается пустая. Это следствие того, что вы объявляете слишком много переменных и сами же путаетесь в них, к тому же в таких случаях нужно использовать отладчик. Он вам подробно расскажет о всех результатах в каждой итерации цикла...

→ Ссылка