//Преобразование "строки" в "СТРОКУ"
void fFirstF(string ***fSent){
int nLen = 10; //Потому что nLen = ***fSent.length() не работает
for(int i = 0; i < nLen; i++){
if ( ***(fSent + i) >= 'a' && (fSent[i]** <= 'z')){ // ***(fSent + i) ошибка тут
***(fSent + i) -= 32;
}
}
}
По факту, string (если это std::string) это класс, а не голый указатель/массив и к нему нельзя применять адресную арифметику. Для обычных массивов a[b] == *(a+b)
, а для классов, у которых определен operator[]
такое не работает. Собственно об этом компилятор и говорит. Что делать? либо писать так, как того хочет язык с++ (fSent[i]) либо переходить на си или те языки, которые соответствуют Вашим желаниям.
void fFirstF(string& fSent){
int nLen = fSent.length();
for(int i = 0; i < nLen; i++){
if ( fSent[i] >= 'a' && fSent[i] >= 'a'){
fSent[i] += 22;
}
}
}
и сразу видно, что что то пошло не так - условие дублируется.
Посмотрел в код, поправил его максимально сохраняя стиль
void fMain(string *fSent);
void fFirstF(string* fSent) {
int nLen = 10;
for(int i = 0; i < nLen; i++){
if ( (*fSent)[i] >= 'a' && (*fSent)[i] <= 'z'){
(*fSent)[i] += 22;
}
}
}
void fIsQuit(char chIsQuit, string *fSent)
{
switch (chIsQuit)
{
case '1':{
fFirstF(fSent);
fMain(fSent);
break;
}
case 'f':{ return; }
}
}
void fMain(string *fSent) {
char chAnsw = ' ';
cin >> chAnsw;
fIsQuit(chAnsw, fSent);
}
int main()
{
string sSent = "";
getline(cin, sSent);
fMain(&sSent);
}
теперь оно как минимум компилится. Также поправил знак возле 'z'. И понял, почему возникло сколько звездочек - при каждой передаче параметра в новую функцию, почему то появляется амерсанд... не нужно так.
Виртуальный выделенный сервер (VDS) становится отличным выбором
помогите с задачей, очень прошу! готов и очень хочу разбираться
Почему этот boolean может запуститься без SDL_Event event, когда должен только с SDL_Event event?
С двумерным массивом, состоящим из n вещественных элементов, выполнить следующее: преобразовать массив, удалив из него одинаковые элементыОсвободившиеся...
Есть структура, которая хранит чимсло из 2 бит, все верно же?