我有一個文件,我想在一行中搜索特定的字符串,然後比較該字符串通過由5000lines組成的整個文件。所有與該字符串匹配的行將被寫入另一個下面的文本文件。到目前爲止,我已經成功地從第一行中獲取該特定字符串,並寫入與特定字符串匹配的所有行。遵循的是隻爲第一行解決問題的代碼。從一行中找到一個特定的字符串通過所有的文件
#include <iostream>
#include <fstream>
using namespace std;
//gets the specific string from first line
string FirstLineSplitedString()
{
ifstream infile;
infile.open("test.txt");
//prints first line
string fline;
string splited;
if (infile.good())
{
string sLine;
getline(infile, sLine);
fline = sLine;
//string starting from Cap900 till before .waa (specific string)
int first = fline.find('_');
int last = fline.find_last_of('.');
splited = fline.substr (first+1,last-first);
}
return splited;
}
int main()
{
string SString = FirstLineSplitedString();
ifstream stream1("test.txt");
string line ;
ofstream stream2("output.txt");
while(std::getline(stream1, line))
{
if(line.find(SString) != string::npos)
stream2 << line << endl;
}
stream1.close();
stream2.close();
return 0;
}
我不知道該怎麼做:我不知道如何做到這一點所有的文件。我的意思是,當我完成從第一行中找到特定的字符串並寫入與字符串匹配的所有行時,如何進入下一行並執行相同的步驟,並將所有行與匹配的字符串相互對齊。此外,如果沒有匹配,只有線本身將寫入文件。
例如:可以說,我有一個包含以下內容(以粗體)
AAAAAA _men這兒有文件test.txt。那裏。等
bbbb _men there here。那裏。
aaaabbbbbaa _from from。那裏。所以
zzzzzzzz _from from。那裏。這裏有
aaabbbbbaaa _men。那裏。所以在這裏
aabbbbaaaa _men。那裏。等
nnnnnnn _from from。那裏。等
AAAAAA _men這裏有
。那裏。等
bbbb _men there here。那裏。這裏有
aaabbbbbaaa _men。那裏。所以在這裏
aabbbbaaaa _men。那裏。等等
這是正確的,因爲我想拆分得到特定的字符串從(_)到最後(。)。現在我想把它與第一行不同,並得到結果。下面是我想從test.txt獲得的output.txt文件
aaaaaa _men there here。那裏。等
bbbb _men there here。那裏。這裏有
aaabbbbbaaa _men。那裏。所以在這裏
aabbbbaaaa _men。那裏。等
aaaabbbbbaa _from from。那裏。所以
zzzzzzzz _from from。那裏。等
nnnnnnn _from from。那裏。等
這種模式應該繼續,直到文件
遺憾的AST線寫了這麼長時間,但我想盡可能清晰。任何幫助將不勝感激。
也不要忘記,匹配特定字符串的行可能會低於對方或可能會在2000行之後。
您可以編輯您的問題補充更多的信息,而不是留下評論。 – Emadpres
我想我在範圍時間內越過了編輯限制。所以我現在就按照你的提醒去做。 –