【发布时间】:2020-03-09 20:52:02
【问题描述】:
我创建了一个文件,在该文件中我用键盘填充字符串,我的任务是从我的第一个文件 (F1) 复制到第二个文件 (F2) 中只包含一个单词的所有字符串。
#include <iostream>
#include <fstream>
#include <clocale>
#include <cstdlib>
#include <cstring>
using namespace std;
int main()
{
int i,n;
char buff[255];
ofstream fout("F1.txt"); // open file for filling
cout << "Enter number of strings ";
cin >> n;
cin.ignore(4096,'\n');
for(i=0;i<n;++i)
{
cout << "[" << i+1 << "-string]" << ":";
cin.getline(buff,255); // write strings from keyboard
fout << buff << "\n"; // fill the file with all strings
}
fout.close(); /close file
const int len = 30;
int strings = n;
char mass[len][strings]; // creating two-dimensional array as buffer while reading
const char ch = '\n';
ifstream fin("F1.txt"); //open file for reading
if (!fin.is_open())
cout << "File can not be open\n"; //checking for opening
else
{
for(int r = 0; r<strings; r++)
{
fin.getline(mass[r], len-1,ch);
cout << "String " << r+1 << " = "<< mass[r] << endl; // output strings from file(buffer)
}
}
return 0;
}
【问题讨论】:
-
您的实际问题是什么?此外,
char buff[255];会更好地作为std::string。并且char mass[len][strings]是不合法的,因为strings的值在编译时是未知的,可变长度数组在某些编译器中是非标准扩展,请改用std::vector。 -
从文件 F1 复制所有只包含一个单词的字符串到文件 F2。
-
那不是问题,那是目标。你的问题是什么?你到底有什么问题?请更具体。您想将行复制到第二个文件,但此代码中没有尝试这样做。而且这段代码比完成这么简单的任务要复杂得多。
-
欢迎来到 Stackoverflow!那么具体是什么不起作用?
-
如何检查每一行是否只包含一个单词?
标签: c++ arrays string file iostream