编程:设置输出路径 和 std::ifstream

2026-02-23 16:02:25

1、“设置输出路径”按钮

编程:设置输出路径 和 std::ifstream

2、特别注意:在使用下列范例代码之前,先将工具箱中的FolderBrowserDialog控件拖拽到软件界面中。

编程:设置输出路径 和 std::ifstream

3、范例代码

编程:设置输出路径 和 std::ifstream

1、用户在我的软件界面中选定路径,即便路径是包含中文的,存储路径的path的值也是正确(包含中文),但是一旦用std::fstream或std::ifstream打开这一路径下的文件,进行读写操作时,路径的中文就丢失了,文件打开失败。

2、经过网络检索,据说这个问题在VS2003、VC6.0以及之前版本是没有的,不幸的是VS2005以后的版本都有这个问题。

3、解决办法是,在使用path变量之前加上语句(1),在path变量使用完之后加上语句(1)。

编程:设置输出路径 和 std::ifstream

4、如果难以确定path变量在什么时候开始使用,在什么时候停止使用,或者为了保险起见,最好的办法是在path变量出现的方法的最前端加上语句(1),在方法的最末端加上语句(2),如下图所示,这也是这次我采用的方法。

编程:设置输出路径 和 std::ifstream

5、这样做之后,生成的X文件如图所示,在数字的千位和万位之间会出现逗号,这使得X文件不被D3D识别。

编程:设置输出路径 和 std::ifstream

6、如果不解决这个问题也无妨,可以无视。

如果非得解决不可,可以采取这样的办法:对输出文件的文件指针进行设置,增加这样一行代码:f.imbue(std::locale("C"));

编程:设置输出路径 和 std::ifstream

7、其实输出模式原本就是f.imbue(std::locale("C")),只是增加了上节中的语句(1)和语句(2)之后,改变了这个默认的输出模式。现在重新写上这行代码,就是为了让输出数据不受影响。

猜你喜欢