-4

我正在尝试制作一个函数来获取文件大小。我尝试使用 GetFileSizeEx,但无法获得我想要的结果(我希望它是整数或双精度数)并比较它是否大于 1MB。无论如何,我做了这个函数,但我收到一个错误,即未声明 filenamestr。

    int getsize(std::string const $filename);
...    
    int getsize(std::string const $filenamestr)
        {
            std::fstream file(filenamestr);
            file.seekg(0, std::ios::end);
            return file.tellg();
        }

我究竟做错了什么?

4

3 回答 3

2

在 C++ 中,您不要在变量名前加上美元符号。删除它应该可以解决您的问题:

    int getsize(std::string const filename);
...    
    int getsize(std::string const filenamestr)
        {
            std::fstream file(filenamestr);
            file.seekg(0, std::ios::end);
            return file.tellg();
        }
于 2013-06-24T19:39:54.140 回答
1

美元符号 $ 不应在变量名中使用。尽管 Visual C++ 支持它,但 C++ 标准不支持它。最好将其从您的参数中删除,但该错误是由两个不同标识符filenamestrand中的差异造成的。$filenamestr

这将解决它。

int getsize(std::string const filename);
...    
int getsize(std::string const filenamestr)
    {
        std::fstream file(filenamestr);
        file.seekg(0, std::ios::end);
        return file.tellg();
    }
于 2013-06-24T19:45:39.453 回答
1

现在我知道您来自 PHP,我可以看到混乱来自哪里。:)

参数名称不需要以$. 这个名字本身就可以了。当您引用filenamestr时,它会查找具有该确切标识符的变量。但是它看不到它,因为$它也是标识符的有效字符,并且它$filenamestr的名称是一个完全不同的变量。

于 2013-06-24T19:40:13.680 回答