#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <values.h>
int main()
{ ifstream f;
f.open("lala.txt");
if(!f)
{
cout<<"Eroare la deschiderea fisierului!"<<endl;
}
char s[100],x;
int i,n=0, k=0;
ofstream g("adinarez.txt");
f.seekg(0,ios::beg); //ne pozitionam la inceputul fisierului
while(f)
{
f.get(x);
s[k]=x;
n++; k++;
}
f.close();
for (i=2; i<n-1; i++)
if((s[i]>=65) && (s[i]<=90))
{ s[i-1]='\"';
s[i-2]='@';}
for(i=0;i<n;i++)
if(s[i]=='.' || s[i]=='?' || s[i]==':' || s[i]=='\0')
s[i+1]='\"';
for(i=0;i<n;i++)
g<<s[i];
g.close();
return 0;
}
答案 0 :(得分:0)
对于初学者,如果您正在处理面向行的输入,请使用
std::getline
逐行阅读;不要使用std::istream::get
。
此外,您需要在读取之后检查流的状态,而不是
之前。像while ( std::getline( f, line )
这样的东西。 line
应该是std::string
,所以你不必担心溢出。
(排序。如果一行包含的内存多于程序可以分配的内存,
你会因未被捕获的std::bad_alloc
而崩溃。但那将是很多
超过一百个字符。)一旦你有了这条线,就可以使用了
输出流上的<<
运算符输出它。随着
你要输出的任何东西。
答案 1 :(得分:0)
如果我正确地理解你的提议:
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::string line;
std::ifstream myfile("1.txt");
std::ofstream outfile("2.txt");
if(myfile.is_open())
{
while (getline(myfile,line))
outfile<<"@"<<line<<std::endl;
myfile.close();
}
else
std::cout << "Woops, couldn't open file!" << std::endl;
return 0;
}