在c++中按值传递字符串和向量

Passing strings and vectors by value in c++

本文关键字:向量 字符串 按值传递 c++      更新时间:2023-10-16

首先我知道这是一件可怕的事情,因为它可能需要大量的内存复制。。。但它需要做,因为我已经得到了规范。

无论如何,我试图通过引用传递一个字符串,通过值传递一个向量,因为它将被编辑,然后被销毁,然后原始的将被再次使用。

这是的功能原型

int print (const string& findme,const string& command,const string& command2,const string& command3, int n, vector<string> list)

这是我的调用,所有变量的类型都是正确的。

print (special,command,command2,command3,n,temp);

当我不尝试调用函数时,一切都会编译并运行。。。但当我这样做的时候,我会得到这个错误:

a2p1.cc: In function âint main(int, char**)â:
a2p1.cc:85: error: no match for call to â(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) (std::string&, std::string&, std::string&, std::string&, int&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)â

所以我在想。。。我应该如何将这些字符串和向量传递给函数?字符串可以通过引用传递,但我需要向量的副本,任何语法帮助都会非常有用!谢谢

以下是变量

    int n;
    string command = "rr";
    string command3 = "null";
    string command2 = "f";
    string japan;
    string special;
    special = "fnord";
    string textFileName;
    vector<string> list;
    vector<string> print;

这是对函数的调用,在第83行:

while (cin >> inputtemp)
{
...
if ((inputtemp == "p")){
print (special,command,command2,command3,n,list);
}// If
}// While

您有一个名为print的函数和一个变量。

您实际上并没有调用print函数。

重命名变量。

(你的功能原型是正确的。它会做你描述的事情)

再看看你的错误就知道了。(我删除了模板以使其更简单)

error: no match for call to (std::vector) (std::string&, std::string&, std::string&, std::string&, int&, std::vector&)