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