将三个文本文件组合成一个文本文件,形成一个句子C++
Combining three text files into one text file forming a sentence C++
我正试图使用Microsoft Visual Studio 2013在C++中创建一个程序。该程序的主要目的是读取三个不同的文件(标题1、标题2和标题3),并将它们放在一起形成一个文件,并在输出文件中创建一个句子。我已经找到了一个可以使用的函数,但这个函数只读取并打印3个文件到控制台窗口上。当我尝试将cout
语句更改为outfile时,我创建的outfile为空。。。我不知道该做什么,也不知道如何构建代码。
#include<fstream>
#include<iostream>
#include<cstdlib>
using namespace std;
void readingFile(string[], ifstream &); //Funtion Prototype
int main()
{
string header1[50], header2[50], header3[50]; //Declaring array with 50 elements
int size1, size2, size3;
ifstream Fin, Fin2, Fin3;
ofstream Fout;
Fin.open("Headlines1.txt"); //Reading from these 3 files.
Fin2.open("Headlines2.txt");
Fin3.open("Headlines3.txt");
if (!Fin || !Fin2 || !Fin3) //Checking for unsuccessful open
{
cout << "Input file opening failed.n";
cin.ignore();
return 1;
}
Fout.open("testingHeadlines.txt"); //Used for unsuccessful opening output
if (!Fout)
{
cout << "Output file opening failed.n";
cin.ignore();
return 2;
}
cout << "Building.... Editing....n" << endl;
cin.ignore();
cout << "Headlines file 1 below:n" << endl;
readingFile(header1, Fin); //Function call
cout << endl << endl;
cout << "Headlines file 2 below:n" << endl;
readingFile(header2, Fin2); //Function call
cout << endl << endl;
cout << "Headlines file 3 below:n" << endl;
readingFile(header3, Fin3); //Function call
cout << endl << endl;
cin.ignore();
return 0;
}
//the function 'readingFile'
//Pre-conditions: Reads the contents from the files of Headlines1,2,and 3
//Post-conditions: Prints out the contents.
void readingFile(string[], ifstream &infile)
{
char next;
infile.get(next);
while (!infile.eof()) //Reading until EndOfFile
{
cout << next; //Problem is here?? I would think.
infile.get(next);
}
}
我只是不确定我说的"问题在这里??"是否就是问题所在。每次我将cout更改为outfile(我知道,我必须更改函数头中的参数)时,我打开outfile,文件都是空白的。
所有的文件都包含随机的单词/短语,当它们放在一起时就会组成一个句子。例如,标题1包含'***詹妮弗女王*'**标题2包含'***做了脑部手术*'**标题3包含吃了30个墨西哥胡椒后的******,组合在一起时,应读作詹妮弗女王吃了30根墨西哥胡椒后进行了脑部手术'但文件中包含的单词/短语比我刚才在示例中列出的要多。
当我运行上面的程序时,我可以读取所有三个标题文件,但它们是以自上而下的形式打印的。例如,我在控制台屏幕上的输出是:
皇后
Jennifer
做了脑部手术
吃了30个墨西哥胡椒后
问题:让我的标题从左到右阅读。
将它们放入输出文件,而不是控制台屏幕。
请帮忙。
您可以替换此。。。
void readingFile(string[], ifstream &infile)
{
char next;
infile.get(next);
while (!infile.eof()) //Reading until EndOfFile
{
cout << next; //Problem is here?? I would think.
infile.get(next);
}
}
以及那里的呼叫,例如…
readingFile(header1, Fin);
用这个。。。
void readingFile(ifstream& infile, ofstream& fout)
{
char next;
while (infile.get(next)) //Reading until EndOfFile or error
if (next != 'n') // if not newline
fout << next; // stream to file
}
并调用…
readingFile(Fin, Fout);
通过这种方式,readingFile
被告知在哪里写入输出,并过滤掉导致输出出现在不同行上的换行符。
这样就可以了。
#include <fstream>
#include <string>
int main() {
// Open the three files.
std::ifstream file_1("Headlines1.txt");
std::ifstream file_2("Headlines2.txt");
std::ifstream file_3("Headlines3.txt");
// Combine into one string.
std::string content;
content += std::string(std::istreambuf_iterator<char>(file_1),
std::istreambuf_iterator<char>());
content += std::string(std::istreambuf_iterator<char>(file_2),
std::istreambuf_iterator<char>());
content += std::string(std::istreambuf_iterator<char>(file_3),
std::istreambuf_iterator<char>());
// Output the string into a single file.
std::ofstream output_file("testingHeadlines.txt");
output_file << content;
}
我不确定你想对文件之间的间距做些什么,但这对你来说应该不太难微调这个代码。
您的输出是这样的一个可能原因是您在infile.get(next)
中使用的std::ifstream::get()
是一种非格式化的读取方法,这意味着默认情况下它不会跳过空白和换行符n
。因此,您需要检查next
值是否是类似以下的换行符:
if(next == 'n') continue ;
然后将其传递给CCD_ 8。因此,您将跳过在控制台屏幕中打印新行。
- 挂起和取消挂起一个文件DLL
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- C++试图读取一个文件并输出到另一个文本文件
- 如何从另一个文件继承私有成员变量和公共函数
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何将class.cpp和class.hpp编译为一个.o文件
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 如何从整个磁盘中排除要装载的一个文件
- 如何将模板和非模板函数放在一个文件中
- 如何在安卓工作室中将c ++头文件从一个文件夹导入到另一个文件夹?
- 使用 scope 运算符 (::) 引用另一个文件中的类
- JNI,使用两个 .so 文件时出错,其中一个文件需要另一个文件
- 为什么我不能从同一目录中的另一个文件中 #include 我的类?
- 在 c++ 中打开文件、删除标点符号并追加到另一个文件中
- C++ 如何将两个 makefile 对象目标规则(位于另一个文件夹中)合并到一个目标/规则中?
- 是否可以将子进程的 stdout 重定向到父进程中的另一个文件?
- c++ 提升如果 .extension() == " "这意味着这个文件是一个文件夹?
- 是否可以在 c++ 中创建一个文件并为其提供属性以将其隐藏?(在 Ubuntu 上)
- 我需要编写一个程序来读取一个文件,该文件将输出所有唯一的整数,如果已经看到整数,它将被关闭
- 如何在标准c ++中流式传输/读取二进制文件的中间部分并写入另一个文件?