Привет всем хорошо, я пытался найти ответ, но не смог найти. (Я нашел, как его использовать), но дело в том, что я просто не знаю, почему мой код не работает. Вот мой код:
#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 больше, чем слово, то оно должно вернуть все слово.
Проблема в том, что программа возвращает целое слово, когда она не должна делать. Поэтому я думаю, что проблема в том, что это не входит в мои функции. Пожалуйста, поправьте меня, если я ошибаюсь.
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)
Других решений пока нет …