c – 为什么从函数返回向量是可以的?
作者:互联网
请考虑此代码.我已经多次看过这种类型的代码了.单词是本地向量.如何从函数中返回它?我们可以保证它不会死吗?
std::vector<std::string> read_file(const std::string& path)
{
std::ifstream file("E:\\names.txt");
if (!file.is_open())
{
std::cerr << "Unable to open file" << "\n";
std::exit(-1);
}
std::vector<string> words;//this vector will be returned
std::string token;
while (std::getline(file, token, ','))
{
words.push_back(token);
}
return words;
}
解决方法:
Can we guarantee it will not die?
只要没有返回引用,这样做就完全没问题了.单词将被移动到接收结果的变量.
局部变量将超出范围.移动(或复制)后.
标签:c,scope,vector,stl,standard-library 来源: https://codeday.me/bug/20190917/1809015.html