12 个解决方案
#1
贴代码。
#2
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <fstream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR szBuf[100] = TEXT("D:\\123.txt");// 这里填写带中文的文件路径,则打开文件失败
ifstream file(szBuf,ios::in);
if(!file)
{
cout<<"no file"<<endl;
}
else
{
cout<<"has file"<<endl;
}
return 0;
}
#3
上面代码,是一个测试段子
#4
VC6下测试了一下你的代码,可以打开中文路径文件
#5
GetLastError看下返回值是什么?
你确定文件确实存在?
你确定文件确实存在?
#6
文件是肯定存在的 ,同样的代码,我把字符集改成了unicode 就找到了文件
#7
与代码页有关 中文是:code_page(936)
搜搜setlocale的用法。
搜搜setlocale的用法。
#8
(!file) ? 来判断???
#9
嗯,这样有什么问题吗?
#10
还是没弄出来
#11
VS2005和VS2008有这个问题,iostream会依赖区域设置,遇到中文路径会出错:
setlocale(LC_CTYPE, ".936")
setlocale(LC_CTYPE, ".936")
#12
谢谢,谢谢!!
添加了setlocale(LC_CTYPE, ".936")果然就有效果了。
至于具体的原因就不太清楚了,去学习下。
添加了setlocale(LC_CTYPE, ".936")果然就有效果了。
至于具体的原因就不太清楚了,去学习下。
#1
贴代码。
#2
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <fstream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR szBuf[100] = TEXT("D:\\123.txt");// 这里填写带中文的文件路径,则打开文件失败
ifstream file(szBuf,ios::in);
if(!file)
{
cout<<"no file"<<endl;
}
else
{
cout<<"has file"<<endl;
}
return 0;
}
#3
上面代码,是一个测试段子
#4
VC6下测试了一下你的代码,可以打开中文路径文件
#5
GetLastError看下返回值是什么?
你确定文件确实存在?
你确定文件确实存在?
#6
文件是肯定存在的 ,同样的代码,我把字符集改成了unicode 就找到了文件
#7
与代码页有关 中文是:code_page(936)
搜搜setlocale的用法。
搜搜setlocale的用法。
#8
(!file) ? 来判断???
#9
嗯,这样有什么问题吗?
#10
还是没弄出来
#11
VS2005和VS2008有这个问题,iostream会依赖区域设置,遇到中文路径会出错:
setlocale(LC_CTYPE, ".936")
setlocale(LC_CTYPE, ".936")
#12
谢谢,谢谢!!
添加了setlocale(LC_CTYPE, ".936")果然就有效果了。
至于具体的原因就不太清楚了,去学习下。
添加了setlocale(LC_CTYPE, ".936")果然就有效果了。
至于具体的原因就不太清楚了,去学习下。