C++ 有没有办法在StringStream中使用非utf 8字符?

C++ 有没有办法在StringStream中使用非utf 8字符?,c++,string,utf-8,stringstream,C++,String,Utf 8,Stringstream,我正在扫描硬盘中的一些文件,并用下面的简单代码将它们放入数据库 std::stringstream ss; ss << "INSERT INTO `test`.`file` ( `name`, `directory`, `size`, `extension`, `read_permission`, `write_permission`,`execute_permission`, `c_time`,`a_time`,`m_time`) VALUE

我正在扫描硬盘中的一些文件,并用下面的简单代码将它们放入数据库

            std::stringstream ss;
        ss << "INSERT INTO `test`.`file` ( `name`, `directory`, `size`, `extension`, `read_permission`, `write_permission`,`execute_permission`, `c_time`,`a_time`,`m_time`) VALUES ("<< "'"
            << app.e.name << "', " << "'"
            << app.e.directory << "', " << "'" << app.e.size << "', " << "'" << app.e.extension << "', " << "'"
            << app.e.read_permission << "', " << "'" << app.e.write_permission << "', " << "'" << app.e.execute_permission << "', " << "'" 
            << app.e.creation_time << "', " << "'" << app.e.execution_time << "', " << "'" << app.e.modification_time << "'); ";
std::stringstream-ss;

ss修复字符串的编码,使其为UTF-8。
stringstream
不关心字符编码。它愉快地接受您提供给它的任何原始字节,甚至
\0
。您的bug位于其他地方。不清楚非UTF8字符是什么意思,也不清楚为什么您认为发布的片段与崩溃有关。Windows文件名无论如何都不是UTF-8格式。它们是UTF-16,Windows编译器本机使用UTF-16和wchar\u t。要么使用“W”C++字符串,要么在输入上显式从WCHART/tUTF16转换为char/utf8,然后返回输出。然后打印并烧录这段代码:)至少使用命名约定来标记哪些变量在SQL中可以安全使用(即,它们的特殊字符已被转义)。还要检查数据库上的编码是否与SQL中的编码匹配。(例如,MySQL喜欢默认为
latin1
,而不是
utf8
)。