1

大家好,我试图寻找答案,但我找不到。(我找到了如何使用它)但问题是我只是不知道为什么我的代码不起作用。这是我的代码:

#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 说。例如 ("Laptop",4) 它应该返回 "Lapt"。如果 int 大于单词,那么它应该返回整个单词。

问题是程序在不应该这样做时返回了整个单词。所以我认为问题在于它没有进入我的功能。如果我错了,请纠正我。

4

1 回答 1

5
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)
于 2013-06-18T04:36:00.780 回答