C ++读取和修改txt文件中的一行

时间:2014-01-14 17:28:02

标签: c++

我在搜索第一个单词的位置时遇到了一些困难。 软件必须在确定的txt文件中搜索指定的单词。所以我已经使用了fstream lib打开并且毕竟写了一些东西。但我不知道如何让软件获得该词的确切位置。我得到的就是:

#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

int main() {
  fstream myfile; // fstream to read and write the myfile
  string  cText = "\n--something--!\n"; // what it will write
  string  line; // will assign the getline() value;
  unsigned int pos = 0; //will be assigned to "seekp" - where it will start to write

  myfile.open( "example.html", ios::binary | ios::in | ios::out );

  if( !myfile ) {
    cout << "File does not exist!" << endl;
    cin.get();
    return false;
  }

  do {
    size_t found = line.find("<head>");
    cout << string::npos << endl;
    if (found != string::npos) {
        cout << line << endl;

    }
  }while( getline(myfile, line));

  myfile.seekp( pos+1, ios::beg );
  //myfile.write( cText, strlen( cText ) ); //write cText
  myfile.close();
  cin.get();
  return 0;
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

不要尝试更改文件中的字节。创建一个新文件,复制这些行,直到找到要替换的行,输出新行,然后输出其余行。因为除非你要替换一个字符串,而另一个字符串具有完全相同的字符数,否则你将覆盖文件中的下一行 - 并且没有好办法避免这种情况。

如果您愿意,可以删除原始文件,并将新文件重命名为该名称。