在输出文件中通过类wfstream编写波斯语(波斯语)

时间:2016-01-03 20:10:30

标签: c++ string unicode persian farsi

如何使用class Users::SessionsController < Devise::SessionsController respond_to :json def create session['user_auth'] = params[:user] resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure") sign_in(resource_name, resource) message = I18n.t 'devise.sessions.signed_in' yield resource if block_given? if request.xhr? return render :json => {:success => true, :login => true, :data => {:message => message}} else respond_with resource, location: after_sign_in_path_for(resource) end end def failure user = User.where(email: session['user_auth'][:email]).first rescue nil message = I18n.t 'devise.failure.invalid', authentication_keys: "email" respond_to do |format| format.json { render :json => {:success => false, :data => {:message => message, :cause => 'invalid'} } } format.html { redirect_to '/users/sign_in' } end end end 将“خلیجفارس”等波斯文写入文件?
我尝试了以下代码,但它不起作用。

std::wfstream

运行程序后文件为空。

2 个答案:

答案 0 :(得分:5)

您可以使用C ++ 11 utf-8字符串文字和标准fstream和字符串:

#include <iostream>
#include <fstream>

int main()
{
    std::fstream f("D:\\test.txt", std::ios::out);
    std::string s1(u8"خلیج فارس");
    f << s1;
    f.close();

    return 0;
}

答案 1 :(得分:2)

首先你可以离开

f << s1.c_str();

只需使用

f << s1;

要使用std::wstream写“خلیجفارس”,您必须为波斯语区域设置imbue,例如:

f.imbue(std::locale("fa_IR"));
在写入文件之前