Использование изменения размера строки

Привет всем хорошо, я пытался найти ответ, но не смог найти. (Я нашел, как его использовать), но дело в том, что я просто не знаю, почему мой код не работает. Вот мой код:

#include <iostream>
#include <string>
using namespace std;

string acorta(string palabra, int carac)
{
string acortado;

acortado=palabra;
if(palabra.length() > carac)
{
return acortado;
}
else
{
acortado.resize(carac);
return acortado;
}
}

int main(int argc, char** argv) {

cout<< acorta("Univesidad",5)<<endl; // here it should show "Unive"cout<< acorta("Secretariado",10)<<endl; //here it should show "Secretaria"cout<< acorta("Estudio",11)<<endl; //here it should show "Estudio" since th number               is long than the word

return 0;
}

хорошо, предположительно, программа должна получить строку и целое число, потому что она должна возвращать строку, пока говорит int. Например («Ноутбук», 4) он должен вернуть «Lapt». Если int больше, чем слово, то оно должно вернуть все слово.

Проблема в том, что программа возвращает целое слово, когда она не должна делать. Поэтому я думаю, что проблема в том, что это не входит в мои функции. Пожалуйста, поправьте меня, если я ошибаюсь.

1

Решение

if(palabra.length() > carac)

Вы говорите, чтобы она возвращала исходную строку, если она длиннее целого числа, которое вы передаете. Вы хотите инвертировать это:

if(palabra.length() <= carac)

А еще лучше, не повторяйте себя и не нужно ненужных копий параметра, который уже является копией оригинала:

if(palabra.length() > carac)
{
palabra.resize(carac);
}

return palabra;

Или вы можете использовать substr Функция, хотя, если вы не хотите делать ненужные подстроки, вы можете настроить его:

return palabra.substr(0, carac);

Если вы сделаете это, вам даже не понадобится копия строки:

string acorta(const string &palabra, int carac)
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]