小编Boj*_*ack的帖子

没有默认构造函数的类向量

让我们说我们有A类:

Class A
{
    public:
       A() = delete;
       A( const int & y )
       : x( y )
       {}
    private:
       int x;
};
Run Code Online (Sandbox Code Playgroud)

如何创建一个std::vector类型A并给出A构造函数的参数?我将如何添加3vector

c++ vector c++11

12
推荐指数
2
解决办法
1万
查看次数

文件名的 Minizip 和 Unicode

我正在尝试使用Minizip压缩具有非 ASCII 文件名的文件。如果一个文件的文件名很麻烦,即名称中至少有一个非 ASCII 字符,那么压缩文件中的文件名就会变得混乱。我红色如何将 minizip 包装器转换为 unicode?并更改了源代码,将标志 11 设置为 true,但没有什么不同。

\n\n

举个例子来说明问题:

\n\n

该文件在 zip 存档中\xe4\xb8\xad\xe6\x96\x87命名。S+\xc3\xad\xc2\xa6vt

\n\n

或者以十六进制表示:

\n\n

\\x53\\x2B\\xA1\\xB5\\xFB\\xE7\\x53\\x2b\\xed\\xa6\\x76\\x74\n前两个十六进制相同,但后四个十六进制不同。 \\x53\\x2b\\xed\\xa6\\x76\\x74S+\xc3\xad\xc2\xa6vtwindow 1252

\n\n

程序中的文件名被硬编码为\\x53\\x2B\\xA1\\xB5\\xFB\\xE7(\xe4\xb8\xad\xe6\x96\x87),以消除输入错误的风险。

\n\n

文件名中仅包含 ASCII 字符的文件按照其在 zip 存档中的名称进行命名。由于zip存档中的文件名比原始文件名更长,我假设使用另一种编码然后是UTF-8。

\n\n

由于计算机中的所有符号实际上都只是二进制字符串,因此我希望一个十六进制字符串能够输出正确的文件名。这里的问题是我不知道 zip 存档中的文件名是如何编码的。

\n\n

有谁知道如何从十六进制/UTF-8 转换为正确的编码以及使用哪种编码?

\n\n

我认为 zip 存档使用了操作系统标准编码,在我的例子中是 Windows-1252。

\n\n
 const char kChineseSampleText[] = "\\x53\\x2B\\xA1\\xB5\\xFB\\xE7";\n\n if ( open_file( zipF, kChineseSampleText ) )\n {\n     //write to file\n }\n\n\n\n bool open_file( const …
Run Code Online (Sandbox Code Playgroud)

c windows character-encoding

5
推荐指数
1
解决办法
2027
查看次数

标签 统计

c ×1

c++ ×1

c++11 ×1

character-encoding ×1

vector ×1

windows ×1