c++读入一个文本文件,将数据读入到一个字符串中

c++读入一个文本文件,内容格式为“qwweerrttyyuuiopp”,将数据读入到一个字符串中,再从字符串中读出每个单词保存到string中,求问有什么错误。。。。怎... c++读入一个文本文件,内容格式为“qw we er rt ty yu ui op p”,将数据读入到一个字符串中,再从字符串中读出每个单词保存到string中,求问有什么错误。。。。怎么程序运行会有汉字 展开
 我来答
冰空花束的奇迹
2014-07-24 · 超过12用户采纳过TA的回答
知道答主
回答量:17
采纳率:0%
帮助的人:20.9万
展开全部

根据在Dev C++ 4.9.9.2中的测试,程序应该没有问题。

你可以检查一下q.txt。如果q.txt文件末有多余空行的话,输出可能有问题。

这是因为你使用了sizeof(file)。还有,sizeof(file)确实是文件的大小,这个没有问题。

porker2008
2014-07-24 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
#include <iostream>
#include <fstream>
using namespace std;

int main() {
int t = 0, i, temp;
ifstream file("q.txt");
streampos fsize = file.tellg();  // 得到文件位置
file.seekg(0, ios::end); // 定位至文件末端
size_t filesize = file.tellg() - fsize; // 相差值为文件大小
file.seekg(fsize); // 返回文件开头
char* str = new char[filesize + 1]; // 开空间,注意 + 1
file.getline(str, filesize + 1);
cout << str << endl;
for (i = 0; i < strlen(str) + 1; i++) {
if (str[i] == ' ' || str[i] == '\0') {
temp = i;
char *string = new char[temp - t + 1]; // 这里注意 + 1
strncpy(string, str + t, temp - t);
string[temp - t] = '\0'; // 补回null终结符
cout << string << endl;
t = i + 1;
}
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
felithuang
2014-07-24 · TA获得超过849个赞
知道小有建树答主
回答量:520
采纳率:50%
帮助的人:709万
展开全部
sizeof(file)是ifstream的对象的大小,并非文件的大小。
这里应该用文件大小。
追问
怎么用文件大小啊?
追答
如果文件不是很大,你直接写死一个数字就好了,只要文件大小不超过这个数字(如1024)即可。
文件的大小,要另外的函数(或者流)来获取。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式