我尝试在全局固件中执行以下代码,但它给了我错误。文件是以下路径:
D:\\back_up_starting_1_18_2020\\visual_studio_programs_all_last_2020\\visual_studio\\Projects\\c++\\c++_2020_3_17_ninety47\\dukascopy-master\\dukascopy-master\\..\\test\\data\\raw\\GBPJPY\\2012\\11\\03\\01h_ticks.bin
file = fs::canonical(file);
我删除了代码以设置路径,而当我删除“ ..”时,我的代码工作正常是行文件= fs :: canonical(file);错误的??
更新:我发现问题与升压单元测试无关,但与ifstream有关。所以我做了这个简洁的代码来重现问题。
// ifstream_arg.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
// ifstream constructor.
#include <iostream> // std::cout
#include <fstream> // std::ifstream
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem.hpp>
namespace fs = boost::filesystem;
int main() {
std::string filename = "./test.txt";
//const char * filename = "./test.txt";
fs::path file(filename);
file = fs::canonical(file);
std::cout << filename << '\n';
std::cout << file.generic_string() << '\n';
std::cout << file.string() << '\n';
std::cout << file.string().c_str() << '\n';
std::cout << file.c_str() << '\n';
////filename = ("\\\\?\\" + file.generic_string()).c_str();
filename = file.generic_string().c_str();
std::cout << filename << '\n';
//std::ifstream ifs("test.txt", std::ifstream::in);
std::ifstream ifs(filename, std::ifstream::binary);
char c = ifs.get();
while (ifs.good()) {
std::cout << c;
c = ifs.get();
}
ifs.close();
return 0;
}
当我使用文件名作为字符串时,ifstream可以正常工作。但是,当我将其用作指向const char的指针时,它给出了错误。我读了std :: ifstream用法,它说ifstream可以同时使用字符串和指向const char的指针?我的错误是什么??
我尝试在全局固件中执行以下代码,但它给了我错误。文件是具有以下内容的路径:D:\\ back_up_starting_1_18_2020 \\ visual_studio_programs_all_last_2020 \\ visual_studio \\ ...
我发现了错误。符合以下条件: