簡體   English   中英

std :: wofstream運算符<<不能按預期工作

[英]std::wofstream operator<< not working as expected

我是一個Visual Studio 2015用戶,正在嘗試編寫以下功能:

void saveWordsToFile(const std::string& filename, const std::vector<std::pair<std::wstring, std::wstring>>& words)
{
    std::wofstream fs(filename, std::ios::out | std::ios::app);
    if (fs.fail()) throw std::runtime_error("loadTextFromFile -> Failed to open '" + filename + "'!");

    for (auto& word : words) fs << word.first << " " << word.second << std::endl;
    fs.close();
}

int main()
{
    std::vector<std::pair<std::wstring, std::wstring>> words;
    words.push_back({ L"1", L"green" });
    words.push_back({ L"ż", L"yellow" });
    words.push_back({ L"3", L"purple" });
    saveWordsToFile("database.txt", words);
    return 0;
}

程序執行前,文件database.txt如下所示:

0 test

執行后,我期望:

0 test
1 green
ż yellow
3 purple

但是我得到了:

0 test
1 green

很容易看到字符“ż”是問題的原因,但是我需要使用它,如何獲得正確的輸出?

在我的系統上,該流嘗試使用wcrtombL'ż'轉換為字節流,但轉換失敗(可能是由於語言環境問題?)。

此時,流以fs.bad()返回true結束,並且跳過了任何其他輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM