我有一项任务要求我们重新格式化给我们的文本文件。该程序使用cmd运行,并给出两个命令参数;一个数字,以及一个文本文件的名称。我的工作是编写一个格式化文本文件的函数,并以特定格式显示它。但是,即使开始,我也很难过。
我只允许编辑这个函数,只允许在这两个括号之间添加代码;
void typeset (int maxWidth, istream& documentIn)
{
}
我完全迷失了该怎么做。我花了一个半小时尝试各种各样的东西,但没有一个能奏效。我不确定语法是如何工作的。在'void typeset'之上,是更多代码,但我不允许改变它。这是.cpp
开头的内容#include "typeset.h"
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
我不知道如何在我'读'文本文件的位置。我想要做的是有一个循环,连续读取字符,直到有空格,将该字符串保存为单词,并继续这样做,直到它到达文件的末尾。我发现的所有东西都使用了类似std :: ifstream的东西,它似乎不起作用。谢谢你的时间。
答案 0 :(得分:2)
问题似乎是缺乏对流如何工作的理解。您不应该创建自己的ifstream,您应该使用提供给函数的istream&
写一些这样的代码,一次读取一个字符
void typeset (int maxWidth, istream& documentIn)
{
char ch;
while (documentIn.get(ch))
{
...
}
}
对我来说,你的困惑似乎是那些只是在互联网上寻找接近他们想要做的事情的人的特征。在某些时候,您必须对C ++有一个更基本的理解,这样您才能理解代码并编写原始代码,而不仅仅是复制和修改代码。你只会通过阅读一本教科书来解决这个问题,这本教科书解释了C ++背后的原理。
在这种情况下,原则是所有不同的输入流从istream
派生,因此任何类型的流的输入都可以使用istream
来完成。