Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 比较两个字符*是否相等_C++_C Strings - Fatal编程技术网

C++ 比较两个字符*是否相等

C++ 比较两个字符*是否相等,c++,c-strings,C++,C Strings,可能重复: 我的比赛条件不行!有人能建议如何与C风格的字符串进行比较吗 void saveData(string line, char* data){ char *testString = new char[800]; char *stpr; int i=0; bool isData=false; char *com = data; strcpy(testString,line.c_str()); stpr = strtok(te

可能重复:

我的比赛条件不行!有人能建议如何与C风格的字符串进行比较吗

void saveData(string line, char* data){
    char *testString = new char[800];
    char *stpr;
    int i=0;
    bool isData=false;
    char *com = data;
    strcpy(testString,line.c_str());
        stpr = strtok(testString, ",");
        while (stpr != NULL) {
            string temp = stpr;
            cout << temp << " ===== " << data << endl;
不确定这是否有帮助。从下面的函数调用
SaveData()
函数:

void readFile(char* str){
    string c="", line, fileName="result.txt", data(str);
        ifstream inFile;
    inFile.open(fileName.c_str());
    resultlist.clear();

    if(inFile.good()){    
        while(!inFile.eof()){
            getline(inFile, line);
            if(line.find(data)!=string::npos){
                cout << line << endl;
            }
            saveData(line, str);
        }
        inFile.close();
    }

}
void readFile(char*str){
字符串c=”,行,文件名=“result.txt”,数据(str);
河流充填;
open(fileName.c_str());
resultlist.clear();
如果(infle.good()){
而(!infle.eof()){
getline(填充,行);
if(line.find(data)!=string::npos){

cout由于
stpr
data
都是C字符串,您需要使用:

#包括
...
if(strcmp(stpr,数据)==0){
//字符串是相等的
...
}否则{
//字符串不相等
}

此条件不起作用,因为
==
运算符没有为
char*
重载

if(stpr==data)
{ 
  isData = true; 
}
用这个代替

if (strcmp(stpr, data) == 0)
{
  isData = true ;
}
如果两个cstring相等,则返回
0
。请确保匹配的两个cstring都保留一些合法内存,并且在末尾以null结尾

编辑:

为了避免任何麻烦和错误,建议不要使用原始
char*
,而是使用
std::string
。因此最好将它们做成字符串并进行比较

std::string data ;   //passed or declared as string
std::string stpr ;
.....
//Do some work.

if (stpr == data)
   //do work here

这种方法将为您节省很多麻烦。

您正在尝试比较两个字符*。您可以尝试使用
strcmp(stpr,data)
检查条件

最好像这样使用它

 if(strcmp(stpr, data)==0){..}

0==strcmp
看起来比
更明确一些!strcmp
我想你是对的。旧的做法很少消失。:)嗨@Coding Mash,我仍然无法进入条件,即使两个字符相同。类型或stm是否与此错误有关?两个cstring是否都分配了一些内存并且都以null结尾?@CodingMas你可以看到,在我做比较之前,我可以把两个临时变量和数据都剔除,这是我的错误。比较2 char *,不幸的是,我仍然不能进入这个条件。@ NPEC+Head的字符串。h’被弃用。考虑使用“cstring”代替。
std::string data ;   //passed or declared as string
std::string stpr ;
.....
//Do some work.

if (stpr == data)
   //do work here
 if(strcmp(stpr, data)==0){..}