Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ filenamestr未在此范围内声明-C++;_C++ - Fatal编程技术网

C++ filenamestr未在此范围内声明-C++;

C++ filenamestr未在此范围内声明-C++;,c++,C++,我正在尝试创建一个函数来获取文件大小。我尝试使用GetFileSizeEx,但无法得到我想要的结果(我希望它是整数或双精度),也无法比较它是否大于1MB。无论如何,我做了这个函数,但是我得到一个错误,没有声明filenamestr int getsize(std::string const $filename); ... int getsize(std::string const $filenamestr) { std::fstre

我正在尝试创建一个函数来获取文件大小。我尝试使用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();
        }

<>我在做什么?C++中的< /p> ,你不需要用一个美元符号来写一个变量名。删除它可以解决您的问题:

    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();
        }

既然我知道您来自PHP,我就可以看出困惑的根源了。:)


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

变量名称中不应使用美元符号$。它不支持C++标准,尽管Visual C++支持它。最好将其从参数中删除,但该错误是由于两个不同标识符
filenamestr
$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();
    }

$
从哪里来?@KonradRudolph它一定是某种cqueryah该死的刚刚注意到了它。谢谢。我猜一些编译器会将
$
识别为变量名的一部分。。。是的,我知道,我打错了,花了30分钟寻找答案,却没有注意到…:/我也习惯了PHP,当这个问题得到解决时,我还有另一个问题,我什么时候在函数中使用字符串前面的“&”符号?
&
与PHP中的含义相同-它意味着“按引用传递”而不是“按值传递”。通常,当您向函数传递参数时,函数接收参数的副本。
&
更改函数对其参数所做的更改(例如,如果在函数内设置
filenamestr=“”
)仅在函数持续时间内持续。函数返回后,更改就消失了。使用&意味着函数在传递给它的参数的同一个副本上运行,因此函数所做的任何更改即使在函数完成后也会保持不变。“函数返回后,变量将恢复到其原始状态。”这是一种糟糕的解释方法。函数参数是一个不同的变量,原始参数没有改变,也不需要还原,因为它从未改变过。我知道,我试图用一种我认为初学者会理解的方式来表达它。但我会编辑我的评论。