问题描述
好的,我有一个我正在尝试制作的程序,基本的事情是防止我在整个项目中一遍又一遍地重写同样长的 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
-
在 Code::Blocks 20.03、Windows 10 64 位上运行
-
另外,正如下面提到的@David C. Rankin,
using namespace std;
is not considered a good practice。