ifstream打开中文路径的问题
来源:互联网 发布:python 去除重复行 编辑:程序博客网 时间:2024/04/29 19:00
代码如下: (为了这个问题,在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打开中文路径的问题
- ifstream打开中文路径的问题
- ifstream打开含中文路径文件时失败的问题
- ifstream打开含中文路径文件时失败的问题
- ifstream VS2005 中文路径打开失败问题
- 关于std::fstream以及std::ifstream打开中文路径名失败的问题和解决方法
- 关于std::fstream以及std::ifstream打开中文路径名失败的问题和解决方法
- 关于std::fstream以及std::ifstream打开中文路径名失败的问题和解决方法
- ifstream & ofstream 打开中文路径失败的解决方案
- ifstream打开含中文路径名文件失败的原因
- ifstream(ofstream) 打开中文路径失败
- vs2008 std::fstream以及std::ifstream打开中文路径名失败的解决方法
- 剖析ifstream打开含中文路径名文件失败的原因
- 剖析ifstream打开含中文路径名文件失败的原因
- 剖析ifstream打开含中文路径名文件失败的原因
- 有时候用ifstream或ofstream打开带有中文路径的文件会失败。 解决办法
- 剖析ifstream打开含中文路径名文件失败的原因
- 剖析ifstream打开含中文路径名文件失败的原因
- Linux 命令基本操作
- 对于想找投资的新创业的公司,红杉风投有一些基本要求:
- IT职场人,切不要一辈子靠技术生存
- Maven起步-教你开始使用Maven
- Linux下ADSL上网配置
- ifstream打开中文路径的问题
- a different object with the same identifier value was already associated with the session
- COM技术内幕-读书笔记-系列之四
- 软件工程师的六年总结
- 硬盘安装Fedoro6的步骤(Linux学习笔记)
- COM技术内幕-读书笔记-系列之五
- Linux下的分区(Linux学习比较)
- 雷军:评估创业项目的十大标准
- 解决多步OLE DB 操作产生错误。