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 &lt;iostream.h&gt; 不是有效的 C++。您应该首先获得一个现代编译器,然后然后重新评估您可能遇到的所有问题。 >首先我要为我的英语道歉。 相信我,我整天都在寻找教程,然后我制作了这个程序。这不是我的作业。我想编辑 20.000 个问题并将它们添加到 @" ",但我找不到更好的解决方案。 @myaut 第一个太通用了,对于学习 C++ 的人来说,它比其他任何东西都噪音大。它还提供了两个版本,而没有提到第二个版本非常特别适用于未广泛使用的非标准库。第二个是纯C。最后一个答案是纯混淆。 【参考方案1】:

对于初学者,如果您正在处理面向行的输入,请使用 std::getline逐行读取;不要使用std::istream::get。 此外,您需要在读取之后检查流的状态,而不是 前。像while ( std::getline( f, line ) 这样的东西。和line 应该是std::string,所以你不必担心溢出。 (有点。如果一行包含的内存超过程序可以分配的内存, 你会因为未捕获的std::bad_alloc 而崩溃。但这会很多 超过一百个字符。)一旦你得到了这条线,你可以使用 输出流上的&lt;&lt; 运算符将其输出。随着 您想输出的任何其他内容。

【讨论】:

【参考方案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 ++从文本文件中读取行并编辑的主要内容,如果未能解决你的问题,请参考以下文章

关于C语言中文本文件的逐行读取的实现

从文本文件中读取所有内容 - C

C ++:从文本文件中读取并分成变量

保存名称从文本框中读取的文件。 C#

C 语言文件操作 ( 读文本文件 | 文本加密解密 )

C ++从文本文件中读取并将其分成变量