php - 等同于 PHP 的 fgets() 的 C++?

标签 php c++

本质上,我正在寻找的是具有以下原型(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/

相关文章:

php - '6k views' 是什么意思以及如何在 PHP 中格式化数字

c++ - std::map<struct,struct>::find 没有找到匹配项,但是如果我通过 begin() 循环到 end() 我会在那里看到匹配项

php - 将空元素插入 PHP 数组

c++ - 如何模拟方法模板的虚拟性

c++ - 在 C++ 中修改 Google Drive 文件列表请求参数

c++ - 具有完整类型信息的循环依赖

c++ - 在 ARM 处理器上运行 pcl::MovingLeastSquares 代码时出现双重释放或损坏运行时错误

php - MYSQL 匹配关键字列表逗号分隔文本字段

javascript - getElementByID div 标签内的 PHP echo 语句

php - 我如何与 Coinbase 的 API 交互?为什么总是失败?