【问题标题】:C++ read line from text file and editC ++从文本文件中读取行并编辑
【发布时间】: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。最后一个答案是纯混淆。

标签: 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      相关资源
      最近更新 更多