我在搜索第一个单词的位置时遇到了一些困难。 软件必须在确定的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;
}
有什么建议吗?
答案 0 :(得分:1)
不要尝试更改文件中的字节。创建一个新文件,复制这些行,直到找到要替换的行,输出新行,然后输出其余行。因为除非你要替换一个字符串,而另一个字符串具有完全相同的字符数,否则你将覆盖文件中的下一行 - 并且没有好办法避免这种情况。
如果您愿意,可以删除原始文件,并将新文件重命名为该名称。