- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我不明白为什么我的编译器 (MSVC++2010) 不喜欢这段代码:
// get_sum(filename as c-string) returns sum from file
int get_sum(const char* const s) {
stringbuf bill_buf;
ifstream bill_file;
bill_file.open(s);
bill_file.get(bill_buf, '\0'); // read whole file
bill_file.close();
return get_sum_from_string(bill_buf.str());
}
我遇到了这些错误(我将它们从德语翻译成英语,并为代码摘录提供了正确的行号,没有前导注释):
错误 1 错误 C2079:“bill_buf”使用未定义的类“std::basic_stringbuf<_Elem,_Traits,_Alloc>”(第 2 行)
错误 2 error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::get(_Elem *,std::streamsize)': 从'转换参数 1 int' 到 'char *' 不可能(第 5 行)
错误 3 error C2228:“.str”左侧必须有类/结构/union 。 (第 7 行)
有人知道那里发生了什么吗?多谢! (如果有人对如何快速将整个文件内容转化为字符串有更好的想法,我也将不胜感激)
最佳答案
您缺少包含。这是您的代码,这次没有使用 streambuf
:
#include<fstream>
#include<string>
#include<iterator>
int get_sum(const char* const s) {
std::ifstream bill_file(s);
std::string contents((std::istreambuf_iterator<char>(bill_file)),
std::istreambuf_iterator<char>());
return get_sum_from_string(contents);
}
关于stringbuf/ifstream 的 C++ 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4797747/
我需要将进程的标准输出(二进制数据)放入字符串缓冲区并在另一个线程中使用它。 这是制作人: while (ReadFile(ffmpeg_OUT_Rd, cbBuffer, sizeof(cbBuff
struct encrypt_stream : public std::stringbuf { int sync() { encrypt_buffer(); flush_to_device()
当我们必须处理字符串操作时,std::string 和 std::stringbuf 之间是否存在任何显着的性能差异,如果是,为什么。 更一般地说,什么时候最好使用 std::stringbuf 而不
我想要一个用于写入自动调整大小数组的接口(interface)。一种方法是使用通用 std::ostream *。 然后考虑ostringstream是否是目标: void WritePNG(ostr
我有一个大致如下所示的 C++ 类(参见下面的代码)。它有一个输入缓冲区和一个使用 std::stringbuf 的输出缓冲区。因为我还想访问原始缓冲区,所以我使用 std::stringbuf.pu
我不明白为什么我的编译器 (MSVC++2010) 不喜欢这段代码: // get_sum(filename as c-string) returns sum from file in
我在这里要做的是将一个 stringbuf 对象转换为一个 char 数组。 我这样做是为了将 char 数组发送到不理解类型 std::stringbuf 的 C 接口(interface)。 这是
我正在尝试对手动缓冲(通过 std::stringbuf )对运行时间的影响进行基准测试,同时执行对文件的写入,而不是插入运算符 << 完成的缓冲。 . 版本 1(无手动缓冲) 此版本涉及在每次迭代时
MathWorks 目前不允许您在 MATLAB 桌面打开时使用 mex 文件中的 cout,因为它们已重定向标准输出。他们当前的解决方法是提供一个函数,mexPrintf, that they re
我正在两个框架(OpenSceneGraph 和 wxWidgets)之间进行内存中图像转换。不想关心底层类(osg::Image 和 wxImage),我使用两个 API 都提供的面向流的 I/O
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 7 年前。 Improve t
我是一名优秀的程序员,十分优秀!