gpt4 book ai didi

c++ - 帮助 C++ 中的 ifstream 函数

转载 作者:太空狗 更新时间:2023-10-29 23:10:23 25 4
gpt4 key购买 nike

我已经阅读了很多教程,但真的找不到关于这个主题的任何内容。

我写了下面的代码来完成一个功能:

#include <fstream>
#include <string>
#include <iostream>

using namespace std;

ifstream ReadFile( ifstream& openInputFile, string& sLine, int& chgLine );


int main()
{
int chgLine;
string MyFile, sLine,
sFile = "test.txt";

cout << "Enter a file: ";
cin >> MyFile ;

ifstream openInputFile;


if ( MyFile != sFile ) // file must be 'hello.cpp' to proceed
{
cout << "Error";
exit(0);
}
// if correct file is entered print the contents of it

ReadFile( openInputFile, sLine, chgLine );

system("pause");
return 0;
}

ifstream ReadFile( ifstream& openInputFile, string& sLine, int& chgLine )
{

while ( getline ( openInputFile, sLine ) )
{
if ( sLine.length() == 0 ) continue; // to proceed

for ( chgLine = 0; chgLine < sLine.length(); chgLine++ )
{
if ( sLine[chgLine] >= 97 && sLine[chgLine] <= 122 || sLine[chgLine] >= 65 && sLine[chgLine] <= 90 )
{
cout << sLine[chgLine];
}

}
}
}

但现在我决定将所有这些分解成三个函数,分别执行我想要的操作,然后从 main() 函数中调用它们。

第一个函数打开文件:

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

ifstream openInputFile()

{
// use a pointer..return a pointer
// ifstream definition is the challenge
ifstream *fp;
//fp = new ifstream openInputFile;
return openInputFile;

}

int main()

{
cout << "Hello, world!" << endl;

system("pause");
return 0;
}

我在尝试返回指针时卡住了。我不明白我做错了什么。我怎样才能让最后一段代码工作?如果它具有函数的类型,如何使用 ifstream 返回一个指针?

最佳答案

执行此操作的 C++ 方法是创建一个包含所有打开、读取和写入的类。请注意,这也会处理自动关闭文件,RAII 的一个很好的例子。 .

// FancyFile.h:

class FancyFile
{
private:
std::ifstream stream;

public:
void DoMagic();

InputFile(const std::string FilePath)
{ stream.open(FilePath.c_str()); }
~InputFile(void)
{ stream.close(); }
};
// FancyFile.cpp:

#include <fstream>
#include <string>

#include "FancyFile.h"

void FancyFile::DoMagic()
{
//.. your custom file handling code goes here
}
// main:

#include "FancyFile.h"

int main()
{
FancyFile myFancyFile("test.txt");

myFancyFile.DoMagic();

system("pause");
return 0;
}

关于c++ - 帮助 C++ 中的 ifstream 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/399053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com