ifstream打开中文路径的问题
2008-12-23 09:32
316 查看
代码如下: (为了这个问题,在MSN上少打了一个/引来了。。。。。。,这个死失血^_^)
此代码作用是按行读取一个文件
#include
void test()
{
std::ifstream file("c://我的中文目录//test.txt");
if(!file.is_open())
return FALSE;
while(file.good())
{
char buffer[1024];
file.getline(buffer, 1024);
}
file.close();
}
结果
1.在VC6.0 中结果运行正常
2.在VS .NET 2003 中(没有试过,估计也正常)
3.在vs .net 2005中不正确啦, is_open返回为false了
原因:
跟踪代码发现_Fiopen用的是wchar_t( 我想可能是盖子不想在WIN98下运行了,所以全部支持NT,自然就是wchar_t类型了。)
/*
这段为盖子打开文件的源代码
_MRTIMP2_NCEEPURE FILE *__CLRCALL_PURE_OR_CDECL _Fiopen(const char *filename,
ios_base::openmode mode, int prot)
{ // open wide-named file with byte name
wchar_t wc_name[FILENAME_MAX];
if (mbstowcs_s(NULL, wc_name, FILENAME_MAX, filename, FILENAME_MAX - 1) != 0)
return (0);
return _Fiopen(wc_name, mode, prot);
}
*/
另mbstowcs_s读取的时候_LocaleUpdate.localeinfo (这个与下面要讲的那个函数有关)
解决主法:
1.setlocale(LC_ALL, ""); 设置一下就OK了 //C语言的
2.std::locale::global(std::locale(""); // 标准库
结尾: STL真恼火, 兼容,BUG.(盖子的原因)
此代码作用是按行读取一个文件
#include
void test()
{
std::ifstream file("c://我的中文目录//test.txt");
if(!file.is_open())
return FALSE;
while(file.good())
{
char buffer[1024];
file.getline(buffer, 1024);
}
file.close();
}
结果
1.在VC6.0 中结果运行正常
2.在VS .NET 2003 中(没有试过,估计也正常)
3.在vs .net 2005中不正确啦, is_open返回为false了
原因:
跟踪代码发现_Fiopen用的是wchar_t( 我想可能是盖子不想在WIN98下运行了,所以全部支持NT,自然就是wchar_t类型了。)
/*
这段为盖子打开文件的源代码
_MRTIMP2_NCEEPURE FILE *__CLRCALL_PURE_OR_CDECL _Fiopen(const char *filename,
ios_base::openmode mode, int prot)
{ // open wide-named file with byte name
wchar_t wc_name[FILENAME_MAX];
if (mbstowcs_s(NULL, wc_name, FILENAME_MAX, filename, FILENAME_MAX - 1) != 0)
return (0);
return _Fiopen(wc_name, mode, prot);
}
*/
另mbstowcs_s读取的时候_LocaleUpdate.localeinfo (这个与下面要讲的那个函数有关)
解决主法:
1.setlocale(LC_ALL, ""); 设置一下就OK了 //C语言的
2.std::locale::global(std::locale(""); // 标准库
结尾: STL真恼火, 兼容,BUG.(盖子的原因)
相关文章推荐
- ifstream打开含中文路径文件时失败的问题
- 解决sqlite3_open函数无法打开中文路径问题
- 解决fstream不能打开带有中文路径文件的问题
- VS2005 FSTREAM 不能打开中文路径名文件的问题!
- 用fstream打开含中文路径文件时失败的问题。
- 关于std::fstream以及std::ifstream打开中文路径名失败的问题和解决方法
- sqlite打开路径含中文的数据库文件失败的问题
- GDAL GDALOpen 打开中文路径的问题
- ifstream打开含中文路径文件时失败的问题
- tomcat 服务器 打开中文路径出现乱码问题
- GDAL GDALOpen 打开中文路径的问题
- GDAL打开HDF格式时遇到的中文路径问题(未解决)
- GDAL打开中文路径和读写中文字段的问题
- 关于GDAL180中文路径不能打开的问题分析与解决
- 解决VS2005中fstream不能打开带有中文路径文件的问题
- 关于GDAL180中文路径不能打开的问题分析与解决
- fstream的使用和打开时存在中文中文路径可能失败的问题,其他中文问题都可以尝试采用如下方法
- ifstream VS2005 中文路径打开失败问题
- 关于std::fstream以及std::ifstream打开中文路径名失败的问题和解决方法
- 有时候用ifstream或ofstream打开带有中文路径的文件会失败。 解决办法