fstream不会在路径名中打开带有重音符号的文件

时间:2013-01-23 16:03:15

标签: c++ exception visual-studio-2012 fstream

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(int argc, char **argv) {

    try
    {
        ifstream file;
        string simplePath = "I:/foo.conf";
        string markPath = "I:/Folder_à/foo.conf";

        file.exceptions(ifstream::failbit | ifstream::badbit | ifstream::eofbit);     

        file.open(simplePath.c_str());  // ok
        file.open(markPath.c_str());    // exception ios_base::failbit set
    }

    catch (ifstream::failure f)
    {
        cout << "Exception " << f.what() << endl;
        return 1;
    }

    return 0;
}

如果文件的路径名中包含重音符号(例如à),则open()函数会抛出ios_base::failbit set例外。

一个简单的解决方法是

file.exceptions(ifstream::badbit | ifstream::eofbit); // removed failbit from the mask

但不是我想要的:如果可能,我想将failbit设置为正常。

我正在使用Visual Studio 2012和Windows 8。

0 个答案:

没有答案