基本上我正在寻找的是具有以下原型的函数:string getln(istream);
我需要做的就是像PHP的fgets()
一样工作,即将输入流作为参数并从流中返回下一行。
我觉得我现在的方法对于每次调用临时变量都有点笨重:
string getln(istream &input) { string rtn; getline(input, rtn); return rtn; }
有没有更好的解决方案?
背景:
我不是在为赋值操作(如some_str = getln(ifile);
)寻找这样的函数,但我正在尝试将它用作字符串流的数据源。最终我想要一个较小版本的getline(ifile, tmp); string_str.str(tmp);
看起来更像string_str.str(getln(ifile));
,但没有我的示例函数的开销,每次都创建一个临时变量。
如果我对此过于挑剔,请随时给我打电话。我只是希望看看是否有办法改进我的方法。
答案 0 :(得分:4)
你很挑剔。任何返回字符串的函数都将具有声明,填充和返回的字符串变量,就像您已经编写的函数一样。
此外,“命名返回值优化”允许编译器有时忽略额外变量。调用者将为对象分配空间并将其传递给您的函数,它将被修改为rtn
变量;返回时不会复制,因为该值已在所需位置。