Как я могу получить символ из указателя строки в C ++? - PullRequest
0 голосов
/ 17 апреля 2019

Я передаю указатель std::string на функцию, и я хочу использовать этот указатель для доступа и изменения символов в этой строке.

Пока единственное, что я могу сделать, это напечататьмоя строка с помощью оператора *, но я не могу получить доступ только к одному символу.Я пробовал с *word[i], *(word + i), где word - мой указатель, а i - unsigned int.

Пока у меня есть это.

#include <iostream>

void shuffle(std::string* word);

int main(int argc, char *argv[])
{
    std::string word, guess;

    std::cout << "Word: ";
    std::cin >> word;

    shuffle(&word);
}

void shuffle(std::string* word)
{
    for (unsigned int i(0); i < word->length(); ++i) {
        std::cout << *word << std::endl;
    }
}

Допустим,Я набираю слово Overflow , я хочу получить следующий вывод:

Word: Overflow
O
v
e
r
f
l
o
w

Я совершенно новичок в C ++ и не являюсь носителем английского языка, поэтому, пожалуйста, извините за ошибки,Благодаря.

1 Ответ

5 голосов
/ 17 апреля 2019

Поскольку вы знаете, что у вас есть объект, передайте его по ссылке.Затем получите доступ к объекту как обычно.

    shuffle(word);
}

void shuffle(std::string& word) // Not adding const as I suppose you want to change the string
{
    for (unsigned int i = 0; i < word.size(); ++i) {
        std::cout << word[i] << std::endl;
    }
}
...