Я новичок в программировании. Сегодня я научился переворачивать строку. Я пытался использовать строку вместо char, но терминал выдает ошибку.
string name = { "george" };
int nChar = sizeof(name) - 1;
string *pName = &name;
string *pNameLast = &name + nChar - 1;
while(pName < pNameLast) {
string save = *pName;
*pName = *pNameLast;
*pNameLast = save;
pName++;
pNameLast--;
}
cout << name << endl;
std::reverse
, я думаю, вы хотите использовать рукописный текст, верно? - person 463035818_is_not_a_number   schedule 18.12.2020string *pNameLast = &name + nChar - 1;
? Вы знаете, что это делает? Похоже, вы только что заменили каждый экземплярchar
наstring
. - person churill   schedule 18.12.2020char*
наstd::string
и ожидать, что ваш код будет работать. - person Yksisarvinen   schedule 18.12.2020sizeof(name)
даст вам размер объектаstd::string
, который не совпадает с длиной строки, которую он обертывает. - person Some programmer dude   schedule 18.12.2020nChar
. Кроме того, вместо того, чтобы пытаться использовать указатели, просто используйтеname[i]
... - person Damien   schedule 18.12.2020&name
нужно заменить наreinterpret_cast<void*>(name.data())
с помощью c++11 (разница в 2 байта). - person Soleil   schedule 18.12.2020&name
- person 463035818_is_not_a_number   schedule 18.12.2020