プログラムに特定の文字列がある行番号を返すようにしたい。 行全体がこの文字列である必要があります。ファイル内に特定の文字列を含む行番号を見つける
私はなぜそれが常にファイル全体の長さを返すのかわかりません。
マイコード:
#include <iostream>
#include <string>
#include <fstream>
#include <limits>
#include <windows.h>
using namespace std;
int main() {
int x;
x=0;
string filename, inputfilename, line;
ifstream inputfile;
while(!inputfile.is_open()) {
cout << "Input filename: ";
getline (cin, inputfilename);
inputfile.open(inputfilename.c_str(),ios::in | ios::binary);
}
//string obj = "[I.LOVE.COOKIES]"; //Was like this
string obj = "[I.LOVE.COOKIES]\r"; //Adding \r solved the problem
while(getline(inputfile, line))
{
if(line==obj)
{
return x;
}
else
{
x++;
}
}
return 0;
}
ファイルには検索文字列が含まれていないため、表示されているコードは、値を指定せずに 'main()'から返すことで、未定義の動作を示します。さらに、このプログラムは、プログラムからの戻りコードが7ビットのみに制限されているため、非常に小さいファイルを適切に処理します。言い換えれば、このすべてのものをスクラップし、最初からそれを書き直す。 –
テキストを読んでいるなら、私はios :: binaryを削除したいと思っています。 – Baldrick
@SamVarshavchikなぜ値UBなしでメインから戻るのですか? – user463035818