1

文字列をconstchar*と比較しようとしています。

std::string line;
std::fstream tmpl;

getlineを使用して、文字列変数にfstreamファイルからの入力を入力します。

getline(tmpl, line);

次に、その行を何かと比較したいと思います。例:

if(line == "$something")

何らかの理由で、常にfalseを返します。私はすでに多くの異なることを試しましたが、成功しませんでした(常にfalseまたは常にtrueを返すようにする)

この問題を修正する理由と方法を教えてください。私は何か見落としてますか?getlineは正しいアプローチではありませんか?

を使用して修正された問題string.find()。別のことを試したときに誤用しました。==ただし、との比較についてはまだ疑問が残ります。

4

3 に答える 3

0

さて、以下のコードを試してください...

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
  string line;
  string sample ="hi";
  string datatoprocess ="";
  ifstream myfile ("example.txt");
if (myfile.is_open())
  {
    while ( myfile.good() )
    {
      getline (myfile,line);
      datatoprocess = datatoprocess + line;
    }
  unsigned found = datatoprocess.find(sample);
  if (found!=std::string::npos)
    std::cout << "Record Found";
    myfile.close();
  }
else cout << "Unable to open file"; 

  return 0;
}
于 2013-01-19T22:35:43.320 に答える
0

以下のコードを試してください..うまくいくと思います...

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
  string line;
  string sample ="hi";
  ifstream myfile ("example.txt");
  if (myfile.is_open())
  {
    while ( myfile.good() )
    {
      getline (myfile,line);
    if(line.compare(sample) == 0)
      cout << line << endl;
    }
    myfile.close();
  }

  else cout << "Unable to open file"; 

  return 0;
}
于 2013-01-19T21:56:45.117 に答える
0

これを使用するようにコードを変更します。

if (strcmp(line,"$something")==0)
于 2013-01-19T21:26:00.513 に答える