有一个函数存储一个小写的字符串并返回它以供以后在 C++ 中使用

问题描述

好的,我有一个我正在尝试制作的程序,基本的事情是防止我在整个项目中一遍又一遍地重写同样长的 4 行代码,我想看看我是否能得到它从cin取一个字符串并使整个字符串小写(我知道transform方法,但这样我不必编写真正的长度if语句)并返回该字符串以用作其他变量程序或其他功能的一部分。

我不知道我是否只需要让函数返回主块中的变量本身或什么。我对 C++ 和一般编码很陌生,如果它可能的 id 喜欢在字符串中包含空格。再说一次,我在 C++ 方面还不是很有经验,所以我想知道它是否可能,如果可能的话,最好的方法是这样做。

这是我目前所拥有的

int loAns() {
    string lAnswer; //Makes the lAnswer,a string used for a long answer that a char wouldn't do properly
    cin >> lAnswer; //User enters it
    // using transform() function and ::tolower
    transform(lAnswer.begin(),lAnswer.end(),lAnswer.begin(),::tolower); //The transform and ::tolower to make it uniform
    cout << lAnswer << endl; //Outputs the lAnswer to console

    return 0; //This is where I'm assuming the variable gets put to be used in the rest of the program
}

解决方法

你的解释是正确的。本质上,一个函数是这样声明的:

type name ( parameter1,parameter2,...) 
{
    //statements
    return <var>;
}

type 用于将变量返回给其他程序。在这种情况下,您想返回一个 std::string,因此您的函数可能是这样的:

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

string loAns()
{
    string lAnswer;
    cin >> lAnswer;
    transform(lAnswer.begin(),lAnswer.end(),lAnswer.begin(),::tolower);
    return lAnswer;
}

int main()
{
    string s = loAns();
    cout << s;
}

结果:

xYZabC123
xyzabc123

如果您想在字符串中包含空格,可以使用 getline():

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

string loAns()
{
    string lAnswer;
    getline(cin,lAnswer);
    transform(lAnswer.begin(),::tolower);
    return lAnswer;
}

int main()
{
    string s = loAns();
    cout << s;
}

结果:

ABc   XYZ   123&A
abc   xyz   123&a
  • 更多信息:

函数:https://en.cppreference.com/w/cpp/language/functions

return : https://en.cppreference.com/w/cpp/language/return

getline() : https://en.cppreference.com/w/cpp/string/basic_string/getline