0

我有一个任务要求我们重新格式化给我们的文本文件。该程序使用 cmd 运行,并给出了两个命令参数;一个数字和一个文本文件的名称。我的工作是编写一个函数来格式化文本文件,并以特定格式显示它。但是,我什至开始都很难。

我只被允许编辑这个函数,并且只允许在这两个括号之间添加代码;

void typeset (int maxWidth, istream& documentIn)
{

}

我完全不知道该怎么做。在过去的一个半小时里,我尝试了各种不同的东西,但都没有奏效。我不确定语法是如何工作的。在'void typeset'之上,是更多的代码,但我不能改变它。这是 .cpp 开头的内容

#include "typeset.h"
#include <string>
#include <sstream>
#include <iostream>
using namespace std;

我不知道如何在“读取”文本文件的地方做一些事情。我想要做的是有一个循环不断读取字符直到有一个空格,将该字符串保存为一个单词,并继续这样做直到它到达文件的末尾。我发现的所有东西都使用了 std::ifstream 之类的东西,这似乎不起作用。感谢您的时间。

4

1 回答 1

2

问题似乎是缺乏对流如何工作的理解。你应该创建自己的 ifstream,你应该使用istream&提供给函数的

编写一些这样的代码来一次读取一个字符的文档

void typeset (int maxWidth, istream& documentIn)
{
    char ch;
    while (documentIn.get(ch))
    {
        ...
    }
}

对我来说,你的困惑似乎是那些只在互联网上寻找与他们想做的事情相近的人的特征。在某些时候,您必须对 C++ 有更基本的了解,这样您才能理解代码并编写原始代码,而不仅仅是复制和修改代码。你只能通过阅读一本解释了 C++ 背后原理的教科书来了解这一点。

在这种情况下,原则是所有不同的输入流都派生istream任何类型的流的输入,因此可以使用istream.

于 2013-10-06T07:20:43.527 回答