首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wofstream operator<<没有按预期工作

wofstream operator<<没有按预期工作
EN

Stack Overflow用户
提问于 2016-04-18 16:00:30
回答 1查看 218关注 0票数 0

我是一个Visual 2015用户,它试图编写以下函数:

代码语言:javascript
复制
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在程序执行之前是这样的:

代码语言:javascript
复制
0 test

执行死刑后,我期待着:

代码语言:javascript
复制
0 test
1 green
ż yellow
3 purple

不管我得到了什么:

代码语言:javascript
复制
0 test
1 green

很容易看出,字符"ż“是一个问题的原因,但我需要使用它,如何获得正确的输出?

EN

回答 1

Stack Overflow用户

发布于 2016-04-18 17:37:45

在我的系统中,流试图使用L'ż'wcrtomb转换为字节流,但是转换失败(可能是由于区域设置问题?)。

此时,流将以fs.bad()返回true结束,任何进一步的输出都将被跳过。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36698946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档