起初我在 Linux 上构建了我的项目,它是围绕流构建的。
当我开始迁移到 Windows 时,我遇到了一些问题。
我有一个要以 UTF-16 编码打开的文件的名称。
我尝试使用 fstream 来做到这一点:
QString source; // content of source is shown on image
char *op= (char *) source.data();
fstream stream(op, std::ios::in | std::ios::binary);
但无法打开文件。
当我检查它时,
if(!stream.is_open())
{} // I always get that it's not opened. But file indeed exists.
我试着用 wstream 来做。但结果是一样的,因为 wstream 也只接受 char *。据我了解是这样,因为作为 char * 发送的 string 在第一个零之后被截断,并且只发送文件名的一个符号,因此永远找不到文件。我知道 Vissual Studio 中的 wfstream 可以接受 wchar_t * 行作为名称,但我选择的编译器是 MinGW,它没有 wstring 构造函数的签名。
有没有办法用 STL 流来做到这一点?
添加
该字符串不仅可以包含 Ascii 符号,还可以同时包含俄语、德语、中文符号。我不想将自己仅限于 ASCII 或本地编码。
下一个补充
数据也可以不同,不仅是ASCII,否则我根本不会用Unicode来打扰自己。例如
提前致谢!