Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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++_String_Structure_String Comparison_C Strings - Fatal编程技术网

C++ 如何比较C++;

C++ 如何比较C++;,c++,string,structure,string-comparison,c-strings,C++,String,Structure,String Comparison,C Strings,好的,这周我们在课堂上学习数组。我接到一个任务,要求我为一名员工创建一个包含员工ID、名字、姓氏和工资的结构。然后,我要求用户输入存储在该结构数组中的5名不同员工的信息,然后要求他们输入搜索字段类型,然后输入搜索值。最后,显示所有积极搜索结果的所有信息 我还是新手,所以我确信这不是一个非常优雅的程序,但我现在要做的是找出如何将用户输入的字符串与存储在结构中的字符串进行比较。。。我将尝试给出下面所有相关的代码 struct employee { int empid, string firstnam

好的,这周我们在课堂上学习数组。我接到一个任务,要求我为一名员工创建一个包含员工ID、名字、姓氏和工资的结构。然后,我要求用户输入存储在该结构数组中的5名不同员工的信息,然后要求他们输入搜索字段类型,然后输入搜索值。最后,显示所有积极搜索结果的所有信息

我还是新手,所以我确信这不是一个非常优雅的程序,但我现在要做的是找出如何将用户输入的字符串与存储在结构中的字符串进行比较。。。我将尝试给出下面所有相关的代码

struct employee { int empid, string firstname, string lastname, float wage };
employee emparray[] = {};
employee value[] = {};

//Code for populating emparray and structure, then determine search field etc.

cout << "Enter a search value: ";
cin >> value.lastname;  

for(i = 0; i < 5; i++) {
if(strcmp(value.lastname.c_str, emparray[i].lastname.c_str) == 0) {
    output();
}
}
struct employee{int empid,string firstname,string lastname,float wage};
employee emparray[]={};
员工价值[]={};
//填充数组和结构的代码,然后确定搜索字段等。
cout>value.lastname;
对于(i=0;i<5;i++){
if(strcmp(value.lastname.c_str,emprarray[i].lastname.c_str)==0){
输出();
}
}
哪个。。。我原以为可以,但它给了我以下的错误

Error   1   error C3867: 'std::basic_string<_Elem,_Traits,_Alloc>::c_str': function call missing argument list; use '&std::basic_string<_Elem,_Traits,_Alloc>::c_str' to create a pointer to member d:\myfile
错误1错误C3867:'std::basic_string::c_str':函数调用缺少参数列表;使用“&std::basic_string::c_str”创建指向成员d:\myfile的指针
有什么想法吗?有没有一种方法可以在不完全修改程序的情况下比较两个.name符号字符串?如果您想让我了解最佳实践,请尽管如此,但也请尝试解决我的特定问题。

应该是:

strcmp(value.lastname.c_str(),emprarray[i].lastname.c_str())==0)

还请注意,您不必这样做,因为使用
strcmp
用于C样式字符串。因为您使用C++,所以可以使用for比较字符串对象。

即:

value.last\u name==emprarray[i]。lastname

请注意,字符串的重载
==
运算符不会进行不区分大小写的字符串比较,但是,您可以自己实现此类功能


其他建议:使用
向量
而不是数组,你应该为数组指定一个大小。

啊,这是我在这里重新键入代码的错误。。。忘记了==0。我们的书说==在比较字符串时不起作用,但可能它意味着字符串数组,而不是字符串对象,我把它搞混了。是c_str末尾的()打破了它。。。我发现函数out的地方没有列出它们=/谢谢@阿凡多:这甚至发生在我们当中最好的人身上;)而且,非常欢迎您。:)我把它解决了。。。我不知道如何动态地使用点表示法(如EMPARY[I].variable中的点表示法),所以我将其拆分为单独的决策语句。lastname就是我发布的示例=)