2011-04-20 121 views
0

可能重複:
How to open an std::fstream (ofstream or ifstream) with a unicode filename ?打開與fstream的,但文件名字符的文本文件不是ASCII

我想用C++的fstream打開一個文本文件,但性格用於文件名不屬於ASCII字符集。 例如:

fstream fileHandle; 
fileHandle.open("δ»Wüste.txt"); 

有沒有辦法存在,通過它我可以打開文件,這樣的名字。

感謝 維韋克

+0

@Ephphatha看到的,這個問題的描述正確。它不是重複的。 – 2011-04-20 09:00:44

+0

它看起來和我完全一樣,但無論如何我都會回答。 – Ephphatha 2011-04-20 09:05:03

+1

文件名固有地系統特定,並且取決於底層文件系統支持的內容。該語言無法定義。 – 2011-04-20 09:47:19

回答

2

從問題How to open an std::fstream with a unicode filename @jalf指出,C++標準庫不是Unicode知道,但有一個窗口延伸接受wchar_t數組。

您將能夠通過在wstream_t數組作爲參數的fstream對象上創建或調用open來打開Windows平臺上的文件。

fstream fileHandle(L"δ»Wüste.txt"); 
fileHandle.open(L"δ»Wüste.txt"); 

上述兩種將調用的wchar_t *的相應的功能的版本,如在串將L前綴指示其是被當作一個Unicode字符串。

編輯:這是一個應該編譯和運行的完整示例。我在我的計算機上創建了一個名爲δ»Wüste.txt的文件,其內容爲This is a test.然後我編譯並在同一目錄中運行以下代碼。

#include <fstream> 
#include <iostream> 
#include <string> 

int main(int, char**) 
{ 
    std::fstream fileHandle(L"δ»Wüste.txt", std::ios::in|std::ios::out); 

    std::string text; 
    std::getline(fileHandle, text); 
    std::cout << text << std::endl; 

    system("pause"); 

    return 0; 
} 

的輸出是:

This is a test. 
Press any key to continue... 
+0

我需要這個fstream。我已經經歷了與此相關的最後一篇文章。 – dearvivekkumar 2011-04-20 09:23:41

+1

我不知道你在問什麼,對不起,我提供的例子適用於Windows系統,並使用fstream。 – Ephphatha 2011-04-20 09:40:08

1

在Windows上,你可以使用長字符串:

fileHandle.open(L"δ»Wüste.txt");