c++怎么读取文件中的中文字符串

我要写一个程序是从一个txt文件中读取中文然后存入excel表中,txt文件中每一行的文字存入excel一个格子中,我用fstream类调用getline函数之后读取一行... 我要写一个程序是从一个txt文件中读取中文然后存入excel表中,txt文件中每一行的文字存入excel一个格子中,我用fstream类调用getline函数之后读取一行之后存入一个char字符串,但是只能读取英文的,中文的读取不了,各位知道应该怎么办?
代码段:
fstream fin;
fin.open("config.txt",ios:base in);
char str[50];
while(!fin.eof() && fin.getline(str,50))
{....}
展开
 我来答
wmesfj
推荐于2017-09-02 · TA获得超过1089个赞
知道小有建树答主
回答量:1545
采纳率:0%
帮助的人:1166万
展开全部
#include <fstream>
#include <string>
#include <iostream>
using namespace std;

int main()
{
ifstream ifs("test.cpp"); // 改成你要打开的文件
streambuf* old_buffer = cin.rdbuf(ifs.rdbuf());

string read;
while(cin >> read) // 逐词读取方法一
cout << read;
cin.rdbuf(old_buffer); // 修复buffer
}

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
ifstream ifs("test.cpp"); // 改成你要打开的文件
ifs.unsetf(ios_base::skipws);

char c;
while(ifs.get(c)) // 逐词读取方法二
{
if(c == ' ')
continue;
else
cout.put(c);
}
}

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
ifstream ifs("test.cpp"); // 改成你要打开的文件

string read;
while(getline(ifs, read, ' ')) // 逐词读取方法三
{
cout << read << endl;
}
}

#include <fstream>
#include <iostream>
using namespace std;

int main()
{
ifstream ifs("test.cpp"); // 改成你要打开的文件

char buffer[256];
while(ifs.getline(buffer, 256, ' ')) // 逐词读取方法四
{
cout << buffer;
}
}
myloneisland
2011-01-20 · TA获得超过924个赞
知道小有建树答主
回答量:215
采纳率:83%
帮助的人:90.9万
展开全部
可以用string来读取中文
#include"fstream"
#include"string"
using namespace std;
int main()
{
string s;
ifstream fin;
ofstream fout;
fin.open("F:\\1.txt");
fout.open("F:\\1.xls");
while(!fin.eof())
{
getline(fin,s); //读取一行字符,要求一行字符中没有制表符'\t',否则用本程序实现不了把一行字符输出到一格excle中
fout<<s<<'\n'; //输出字符,如果不想换行,就去掉'\n'
}
fin.close();
fout.close();
system("pause");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友44fea63a2
2011-01-20 · 超过23用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:60万
展开全部
{
FILE *fp;
char buf[1000];
fp=fopen("student.txt","r");
if(!fp)
{
printf("打开文件出错\n");
return;
}

while(fscanf(fp,"%s",buf))>0)
{
..................................
}
fclose(fp);

}

这样就能每次读取一行字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
敛正雅7f
2011-01-20 · TA获得超过2031个赞
知道大有可为答主
回答量:1553
采纳率:0%
帮助的人:1761万
展开全部
试试将txt文件另存为unicode编码。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2017-10-11 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2945万
展开全部
vs2008 、vs2005下 std::ifstream中不支持中文,是因为在vs2008 、vs2005 下,默认传入的 unicode 字符集 ,而一般开发的时候 大多数使用的多字节字符集,所以会导致出错 。
1、使用C语言的函数设置为中文运行环境
setlocale(LC_ALL, "Chinese-simplified");
2、使用STL函数设置为系统语言环境
std::locale::global(std::locale(""));
3. 或者 直接 修改 log4cpp 的 参数,直接传入的是 宽字节 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式