1

我正在尝试将字符串与 const char* 进行比较。

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

我使用 getline 用来自 fstream 文件的一些输入填充字符串变量:

getline(tmpl, line);

然后我想将该行与以下内容进行比较:

if(line == "$something")

由于某种原因,它总是返回 false。我已经尝试了很多不同的东西,但没有成功(让它总是返回假或总是真)

为什么以及如何解决此问题?我错过了什么?getline 不是正确的方法吗?

使用string.find(). _ 当我尝试不同的事情时,我误用了它。然而,关于比较的问题==仍然悬而未决。

4

3 回答 3

0

更改您的代码以使用它:

if (strcmp(line,"$something")==0)
于 2013-01-19T21:26:00.513 回答
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

好的现在试试下面的代码......

#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 回答