C ++相当于PHP的fgets()?

时间:2010-10-26 21:34:10

标签: php c++

基本上我正在寻找的是具有以下原型的函数: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));,但没有我的示例函数的开销,每次都创建一个临时变量。

如果我对此过于挑剔,请随时给我打电话。我只是希望看看是否有办法改进我的方法。

1 个答案:

答案 0 :(得分:4)

你很挑剔。任何返回字符串的函数都将具有声明,填充和返回的字符串变量,就像您已经编写的函数一样。

此外,“命名返回值优化”允许编译器有时忽略额外变量。调用者将为对象分配空间并将其传递给您的函数,它将被修改为rtn变量;返回时不会复制,因为该值已在所需位置。