Я просто делал некоторые упражнения и застрял при попытке изменить символы строки s на символ x, и это мой код ниже:

#include <iostream>
#include <vector>
#include <string>
using namespace std;
using std::vector;
using std::array;

int main()
{
    string s{ "Hello" };
    for (auto &c : s)
        char c{ "x" };
}

Но это выбрасывает ошибку:

'c': 'std :: string' отличается по уровням косвенности от '_Elem &' T

Если бы кто-то мог помочь, это было бы здорово

2
Tom Heeley 21 Авг 2018 в 08:41

3 ответа

Лучший ответ

Попробуйте заменить цикл for на:

for(auto &c : s)
    c = 'x'
2
vividpk21 21 Авг 2018 в 05:45

Изменить значение c изменит символы в s

#include <iostream>
#include <vector>
#include <string>
using namespace std;
using std::vector;
using std::array;

int main()
{
    string s{ "Hello" };
    for (auto &c : s)
        c = 'x';
    cout << s;
}
1
shawn 21 Авг 2018 в 05:45

Используйте алгоритм:

std::fill(begin(s), end(s), ‘X’);

В вашем коде вы используете строковый литерал для инициализации char. Вы также не хотите определять новый char, а назначаете ссылку, которую вы уже получили.

3
Dietmar Kühl 21 Авг 2018 в 05:47
51942247