我在C / C ++环境中使用mongoc
驱动程序,为了将字符串从json
转换为bson
文档,我首先从ISO-8859-1
转换它使用UTF-8
到iconv
因为mongo c驱动程序有多字节characers的问题。
在某些情况下,我的json
文件可以包含特殊不可见字符(例如,在Notepad ++中显示为空格字符的字符,但我可以在cygwin
控制台),这将在解析期间导致问题。使用isprint
会使程序因这些字符而崩溃,因此我使用iswprint
。
我想做一些事情,比如:
for (int i = 0; i < str.length(); i++) {
if (!iswprint(strx[i]))
strx[i] = ' ';
} // strx is of type std::string
但是,iswprint返回的值对于不可见字符是256,而对于像ß
这样的字符则是0