当 ofstream 已经在访问文件时,如何将 std::wstring 写入文本文件?

问题描述

在我的数据中,我有通常的 std::strings,并且为了保留德语变音,还有一些 std::wstrings。我正在尝试将它们写入文本文件,但此行中有错误 outfile << physical_address.street << std::endl;:

E0349: 没有运算符“

在德语中,保留变音符号很重要——写 oe 而不是 ö 看起来不专业,否则你可能会混淆一些村名。

我做了一些研究:

我发现的第一个建议是将 w 字符串转换为字符串。我可以将此变量转换为 std::string 而不出错吗?

第二个建议是使用 std::wofstream。当我的 std::ofstream 已经在访问该文件时,我该怎么办?

第三个建议是使用字符数组。然后,我将不得不编写一个函数来替换一些字母(我可以想象这样做)。

void Person::store_data_in_textfile()
{
    printf("Stammpfad f\x81 \br den neuen Ordner eingeben (zum Beispiel C:/Users/aName/Desktop)\n");
    printf("Der Ordnername selbst wird aus dem Vor- und Nachnamen gebildet.\n");
    std::string OutputFolder;
    std::cin >> OutputFolder;
    OutputFolder = OutputFolder + "/" + first_name + " " + last_name;
    char* writable = new char[OutputFolder.size() + 1];
    std::copy(OutputFolder.begin(),OutputFolder.end(),writable);
    writable[OutputFolder.size()] = '\0';

    if (CreateDirectoryA(writable,NULL) == 0)
    {
        printf("Diesen Ordner gibt es bereits.\n");
    }
    else
    {
        std::string OutputFilePath = OutputFolder + "/" + "info.txt";
        std::ofstream outfile (OutputFilePath);

        outfile << "Stand dieser Datei: ";
        time_t Now;
        struct tm Nowlocal;
        Now = time(NULL);
        Nowlocal = *localtime(&Now);

        std::stringstream D_U; //Datum Uhrzeit
        D_U << std::setw(2) << std::setfill('0') << Nowlocal.tm_mday << "." << std::setw(2) << std::setfill('0') << Nowlocal.tm_mon + 1 << "." << Nowlocal.tm_year + 1900 << "," << std::setw(2) << std::setfill('0') << Nowlocal.tm_hour << ":" << std::setw(2) << std::setfill('0') << Nowlocal.tm_min << " Uhr";
        std::string d_u = D_U.str();

        outfile << d_u << std::endl;

        outfile << first_name << " " << last_name << std::endl;
        outfile << nickname << std::endl;
        outfile << physical_address.street << std::endl;



        outfile.close();
    }

    delete[] writable;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...