gpt4 book ai didi

c++ - goto语句与递归

转载 作者:行者123 更新时间:2023-12-02 10:25:22 25 4
gpt4 key购买 nike

我正在编写一个打开文件的功能,其中打开模式取决于用户的选择。下面给出的是函数

void open_file(char T)
{
string name;
open:
cout << "\n Enter filename/path : ";
cin >> name;
if(T == 'N')
file.open(name);
else
if(T == 'O')
{
file.open(name, ios::app | ios::in);
if(!file)
{
cout << "\n File not found. Try again";
goto open;
}
file.seekg(0);
}
}

如果找不到该文件,则程序转到 open:,因为我使用了未理解的 goto语句。请注意, open:name声明之后开始。

我想知道 goto open是否比 open_file('O')的内存效率低/慢,因为每次调用 open_file('O')都会声明 name
请注意:人们不使用 goto语句的唯一原因是他们使程序更加复杂。

最佳答案

如果您使用while块而不是goto,则将更易于阅读。无需递归。

void open_file(char T)
{
string name;
bool retry;
do {
retry = false;
cout << "\n Enter filename/path : ";
cin >> name;
if(T == 'N')
file.open(name);
else
if(T == 'O')
{
file.open(name, ios::app | ios::in);
if(!file)
{
cout << "\n File not found. Try again";
retry = true;
}
else
file.seekg(0);
}
} while (retry);
}

关于c++ - goto语句与递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33856020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com