关于getline的使用问题。

studycplus 2007-09-06 09:04:08
#include "windows.h"
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>

using namespace std;

void main()
{
wstring fileNameStr;
WIN32_FIND_DATA findFileData;
HANDLE hFind;
TCHAR *pathName = L"C:\\Documents and Settings\\xglu\\桌面\\16\\*.*";
hFind = FindFirstFile(pathName, &findFileData);
ifstream inputFile;

int i = 0;
while (FindNextFile(hFind, &findFileData))
{
if(0 != i)
{
wstring fileName = findFileData.cFileName;
inputFile.open(fileName.c_str());
wcout << fileName << endl;
string str;
while(getline(inputFile, str))//这里我想让他循环读取所有文件中的内容。可是他把第一个文件中的内容读取完以后就不再读其他的文件了。为什么???
{
cout << str << endl;
}
inputFile.close();
}

i++;
}

FindClose(hFind);
system("pause");
}

在这个程序中。我想循环读取一个文件夹下的所有文件,然后讲文件名和文件中的所有内容都显示出来。可是它只显示一个文件的内容以后就不再读取其他文件的内容了。其他文件都只显示文件名,不显示内容了。而如果将while(getline(inputFile, str))改为getline(inputFile, str)就可以顺利执行,也就是每个文件只读取第一行。
...全文
137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
studycplus 2007-09-06
  • 打赏
  • 举报
回复
谢谢
星羽 2007-09-06
  • 打赏
  • 举报
回复
1)
string str;
ifstream f("test.txt");
while (getline(f, str))
cout<<str<<endl;


2)
f.clear();
f.sync();
f.seekg(0);

char str2[128];
while (f.getline(str2, sizeof(str2)))
cout<<str2<<endl;
dabang_007 2007-09-06
  • 打赏
  • 举报
回复
这样试试:
inputFile.close();
inputFile.clear();
要清空流的状态
taodm 2007-09-06
  • 打赏
  • 举报
回复
VC6吧,没打sp6补丁吧。打了补丁就可以了。
iflytekxglu 2007-09-06
  • 打赏
  • 举报
回复
在inputFile.close() 后加一句inputFile.clear()

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧