C++ 恢复/传递一个向量(在标题中调用啥?)
Posted
技术标签:
【中文标题】C++ 恢复/传递一个向量(在标题中调用啥?)【英文标题】:C++ restore/pass a vector (what to call in the header?)C++ 恢复/传递一个向量(在标题中调用什么?) 【发布时间】:2015-01-21 20:46:49 【问题描述】:我正在学校学习 C++,我正在为我的学校项目添加一些功能。我们需要编写一个程序,在文件夹中的文件中搜索单词。
现在我想列出所有目录和文件并将它们传回(返回),这样我就可以在控制台上显示(输出)它们。
所以我使用了一个向量类型的字符串并将我找到的所有路径推回...... 然后我想用 return 给(传递)它们,但我得到了错误:
error: cannot convert `std::vector<std::string, std::allocator<std::string> >' to `std::string*' in return
这是一些代码:
string OpenFolder(string path, const string constSearchedWord)
vector<string> vIndex; //Vektor erzeugen
vector<string>::iterator i; //Iterator (zum durchlaufen)
...
while ( 0 != ( dirEntry = readdir( dirHandle ) ) )
string name = dirEntry->d_name;
fullPath = path + '\\' + name;
vIndex.push_back(fullPath);
//Den Ordner schliessen
closedir( dirHandle );
... 如果我想在这个函数中将它写入控制台:
for (i = vIndex.begin(); i < vIndex.end(); ++i)
cout << static_cast<string>(*i) << endl;
工作很轻松,但我不想在这个函数中写到控制台中。
我想做
return vIndex;
我认为问题出在标题中:
string OpenFolder(string path, const string constSearchedWord)
我试过了
vector OpenFolder(string path, const string constSearchedWord)
但这也没有用。
我不知道在这里设置什么:
->???<- OpenFolder(string path, const string constSearchedWord)
【问题讨论】:
你肯定没学过C。C没有std::vector
。
顺便说一句,如果您返回的变量是 vector<string>
,那么返回值也需要是 vector<string>
不是很明显吗?
@The Paramagnetic Croissant 井,当然。我不知道,我怎么会忘记这个......但是谢谢
【参考方案1】:
更改函数OpenFolder
的返回类型
string OpenFolder(string path, const string constSearchedWord)
~~~~~ should be std::vector < std::string >
还有,
对函数参数使用const
引用
std::vector<std::string> OpenFolder(const string& path,
const string& constSearchedWord )
【讨论】:
抱歉,为什么是string&
,与string
的区别在哪里?
@Sinmson 这是一个参考。如果您不认识该术语,请 Google 搜索“C++ 参考”。
@The Paramagnetic Croissant 好的,谢谢。我搜索了它,知道为什么这在理论上更好。但在实践中真的有区别吗?
@Sinmson 有时有,有时没有。但这有关系吗?我怀疑。当这成为一个可衡量的瓶颈时,才考虑它。【参考方案2】:
如果你想从一个方法返回字符串向量,那么返回类型需要是一个字符串向量,即
std::vector<std::string> OpenFolder(string path, const string constSearchedWord)
【讨论】:
【参考方案3】:函数定义/声明通常采用...的形式
[return type] [function name]([arguments])
如果您从OpenFolder
函数返回vIndex
,则返回类型需要与vIndex
的类型相匹配,即vector<string>
。
【讨论】:
以上是关于C++ 恢复/传递一个向量(在标题中调用啥?)的主要内容,如果未能解决你的问题,请参考以下文章