C ++从文本文件中读取行并编辑
Posted
技术标签:
【中文标题】C ++从文本文件中读取行并编辑【英文标题】:C++ read line from text file and edit 【发布时间】:2015-03-14 19:05:06 【问题描述】:首先我想为我的英语道歉。我想创建一个程序,它从 .txt 文件中读取每一行,并为每一行添加前面的 @" 和末尾的 "。示例:@“我喜欢苹果”。到目前为止,这是我替换“。”,“?”的代码。和“:”,但我不想要那个。
#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;
【问题讨论】:
首先,本站的人不是来帮你解决功课的。但最重要的是,在询问之前使用谷歌!互联网上无数的教程和网站都涵盖了基本的字符串操作。 您一定使用的是古老的编译器。任何最新的编译器都不会超过第一行,因为#include <iostream.h>
不是有效的 C++。您应该首先获得一个现代编译器,然后然后重新评估您可能遇到的所有问题。
>首先我要为我的英语道歉。
相信我,我整天都在寻找教程,然后我制作了这个程序。这不是我的作业。我想编辑 20.000 个问题并将它们添加到 @" ",但我找不到更好的解决方案。
@myaut 第一个太通用了,对于学习 C++ 的人来说,它比其他任何东西都噪音大。它还提供了两个版本,而没有提到第二个版本非常特别适用于未广泛使用的非标准库。第二个是纯C。最后一个答案是纯混淆。
【参考方案1】:
对于初学者,如果您正在处理面向行的输入,请使用
std::getline
逐行读取;不要使用std::istream::get
。
此外,您需要在读取之后检查流的状态,而不是
前。像while ( std::getline( f, line )
这样的东西。和line
应该是std::string
,所以你不必担心溢出。
(有点。如果一行包含的内存超过程序可以分配的内存,
你会因为未捕获的std::bad_alloc
而崩溃。但这会很多
超过一百个字符。)一旦你得到了这条线,你可以使用
输出流上的<<
运算符将其输出。随着
您想输出的任何其他内容。
【讨论】:
【参考方案2】:如果我正确地理解了这种方式:
#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;
【讨论】:
以上是关于C ++从文本文件中读取行并编辑的主要内容,如果未能解决你的问题,请参考以下文章