我试图通过用户aboslute路径读取文件。 这就是我如何获得这条道路:
void WavRead::run(){
const char* temp_filePath;
temp_filePath = WavRead::getFilePath();
WavRead::readFile(temp_filePath);
}
然后我这样传递:
int WavRead::readFile(const char* filePath){
wav_hdr wavHeader;
int headerSize = sizeof(wav_hdr);
FILE* wavFile = fopen(filePath, "r");
if (wavFile == nullptr){
fprintf(stderr, "Unable to open wave file: %s\n", filePath);
return 1;
}
size_t bytesRead = fread(&wavHeader, 1, headerSize, wavFile);
fprintf(stderr, "Header size: %d\n", bytesRead);
return 0;
}
最后我试图用给定的绝对路径打开一个文件(例如D:\ daisy.wav)
Casper.prototype.evaluate = function evaluate(fn, context) {
...
// function context
if (arguments.length === 1) {
return utils.clone(this.page.evaluate(fn));
} else if (arguments.length === 2) {
// check for closure signature if it matches context
if (utils.isObject(context) && eval(fn).length === Object.keys(context).length) {
context = utils.objectValues(context);
} else {
context = [context];
}
} else {
// phantomjs-style signature
context = [].slice.call(arguments, 1);
}
return utils.clone(this.page.evaluate.apply(this.page, [fn].concat(context)));
};
但这不起作用。文件没有加载,cosnole告诉我这个答案:
“无法打开wave文件:!”
答案 0 :(得分:2)
指针filePath = input.c_str();
仅在变量输入存在时有效。从函数返回时,这将变为无效。
请考虑返回字符串:
std::string WavRead::getFilePath(){
std::string input;
...
return input;
}
并在代码的其余部分使用字符串,除非您绝对需要调用需要char *参数的函数,在这种情况下,您可以使用c_str()
安全地提供它。