C++ 如何为一个函数分配多个字符串变量?

C++ 如何为一个函数分配多个字符串变量?,c++,C++,基本上,我希望我的函数stringFeatures输出变量text、text1和text2的大小和容量。我试图将text、text1和text2分别分配给变量,以减少代码的混乱,但没有成功。我该怎么办?多谢各位 #include <iostream> #include <string> using namespace std; int main() { string text = "Banana"; string text1 = "Orange"; string tex

基本上,我希望我的函数stringFeatures输出变量text、text1和text2的大小和容量。我试图将text、text1和text2分别分配给变量,以减少代码的混乱,但没有成功。我该怎么办?多谢各位

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

int main() {
string text = "Banana";
string text1 = "Orange";
string text2 = "Grapes";
string variable = text + text1 + text2;


void stringFeatures (string variable);
{
    cout << "Size: " << variable.size();
    cout << "Capacity: " << variable.capacity();
}

cout << variable << endl;

}

我希望输出分别是每个字符串的大小和容量,但我不知道如何分别分配每个变量,我只是将所有变量组合在一起,如字符串变量所示,因为如果我理解正确,我不知道该怎么做,您希望调用函数3次,并传递要显示其容量和大小的变量。看看下面的代码:

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

void stringFeatures(string variable)
{
    cout << "Size: " << variable.size();
    cout << "Capacity: " << variable.capacity();
}

int main() 
{
    string text = "Banana";
    string text1 = "Orange";
    string text2 = "Grapes";

    stringFeatures(text);
    stringFeatures(text1);
    stringFeatures(text2);  
}
像这样

void MyFunction(string variable) {
    cout << variable.size();
    cout << variable.capacity();
}

int main() {
    string text1 = "Banana";
    string text2 = "Orange";
    string text3 = "Grapes";

    MyFunction(text1);
    MyFunction(text2);
    MyFunction(text3);
}

我已修复并注释了您的代码,使其按照您的意愿工作:

#include <iostream>
#include <string>

// That's the function's definition (body), it should not be inside another function
void stringFeatures (std::string variable) // <-- no ; in a function definition
{
    std::cout << "Size: " << variable.size();
    std::cout << " Capacity: " << variable.capacity();
    std::cout << "\n"; // Additional newline for clarity
}

int main() {
    std::string text = "Banana";
    std::string text1 = "Orange";
    std::string text2 = "Grapes";

    // Call the function with each string
    stringFeatures(text);
    stringFeatures(text1);
    stringFeatures(text2);
}

您可以调用该函数3次,每次都传递一个不同的参数:stringFeaturestext;stringFeaturestext1;StringFeaturesExt2;另外,您不能在另一个函数中定义一个函数。谢谢,但它允许我这样做吗?我有点困惑,因为我认为每次都会打印变量,并试图将每个字符串设置为variable@JohnnyMopp-不能在另一个函数中定义函数。学究气;是的:你可以选择一个GCC扩展,它允许至少C,不确定C++。但这不便于携带,所以这是一个糟糕的选择。另一个选项是使用lambda:void f{const auto nested=[]{return true;};if nested{/*…*/}。除了输入错误M->;,你的答案看起来像是在main中定义了MyFunction,这是不允许的。@Quentin是的,这一点你肯定是对的。修正了。但是当你试图调用函数时,它仍然没有被声明——我建议你在运行中编译和测试代码;非常感谢。我只是对一件事有点困惑。当我用每个字符串调用函数时,我都会检查变量大小和容量。当我用text和text1调用它时,程序会识别text和text1作为变量吗?@SophieMcKeown Dillon。变量是函数的参数,在第一次调用中以参数文本形式提供的内容进行调用时初始化。因此,stringFeatures在其第一次调用中的变量是main文本的副本。请注意进一步的研究:如果使用引用参数void stringFeaturesstd::string&variable,则会发生变化,在这种情况下,变量将直接引用为文本的别名。哦,对了,谢谢!我有点理解它,那么它是否只是认识到我作为一个论点提供的内容的大小?我有点纠结的地方是为什么我要放variable.size,例如我可以放任何工作名称.size,当调用函数时它会识别它吗?@SophieMcKeown Dillon我不确定我是否理解你的问题,但是:除了在调用时初始化外,函数的参数只是规则变量。你可以随意命名它们,它们只存在于函数内部。对不起,我的意思是,在我的代码中,我在函数内部声明了变量。我理解您的解释,但我认为函数在调用时识别变量的大小和容量,而不是text、text1等。例如,我认为我必须键入text.size;并且对程序如何将变量的大小识别为文本大小感到困惑。
#include <iostream>
#include <string>
using namespace std;

int main() {
    string text = "Banana";
    string text1 = "Orange";
    string text2 = "Grapes";
    string variable = text + text1 + text2;

    // This declares a stringFeatures function that is not used at all
    void stringFeatures (string variable);

    // This is completely separate from the function declaration above,
    // which ended at the semicolon.
    // It's a plain code block which only acts on the local variable `variable`.
    {
        cout << "Size: " << variable.size();
        cout << "Capacity: " << variable.capacity();
    }

    cout << variable << endl;
}