gpt4 book ai didi

stringbuf/ifstream 的 C++ 编译器错误

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:05 25 4
gpt4 key购买 nike

我不明白为什么我的编译器 (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. 错误 1 ​​错误 C2079:“bill_buf”使用未定义的类“std::basic_stringbuf<_Elem,_Traits,_Alloc>”(第 2 行)

  2. 错误 2 error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::get(_Elem *,std::streamsize)': 从'转换参数 1 int' 到 'char *' 不可能(第 5 行)

  3. 错误 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com