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){..}