函数中的 fstream

fstream in a function

我无法在 tilstart 函数中从文件中提取任何内容,但程序顺利完成。该函数的目标是遍历 txt 文件,直到它“开始”。我必须使用递归,但我必须在函数末尾使用 (//)tilstart(files) 来防止堆栈溢出,因为文件没有提供输入。 cout << start 是这样我可以看到程序是否正在接收单词。

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

void tilstart(ifstream& file)
{
    //ifstream files(file);
    string start;

    file >> start;

    cout << start;

    if (start == "start") {

        cout << start;
        return;
    }

    cout << start;

    // tilstart(file);
}

int main()
{

    ifstream files("input13.txt");
    files.open("input13.txt");

    if (files.is_open()) {

        tilstart(files);
    }

    return 0;
}    

这是文件vvv。

going
there
start
h
f
t

我建议您在扫描文件时使用getlinehttp://www.cplusplus.com/reference/string/string/getline/

另见: How to read until EOF from cin in C++

递归是一种强大的分析工具,但它很少是一种合适的实现技术。写一个循环:

void tilstart(std::ifstream& file) {
    std::string start;
    while (file >> start) {
        if (start == "start")
            break;
        }
}

谢谢大家的建议!我发现我没有从文件中获得输入的原因是因为在主程序中我在制作第二行后忘记编辑第一行。

ifstream files("input13.txt");
files.open("input13.txt");

我做过一次:

ifstream files;
files.open("input13.txt");

成功了!如果有人能告诉我为什么这是我非常感激的原因:)