首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带字符串的C++关系运算符==

带字符串的C++关系运算符==
EN

Stack Overflow用户
提问于 2017-04-30 10:16:02
回答 3查看 147关注 0票数 1

我得到一个错误,我不能使用关系运算符"==“来测试字符串与字符串是否匹配。是否因为(字符串数组)而需要不同的运算符?

代码语言:javascript
运行
复制
int searchArray(string name, string &firstNameArray); // declares the function

int main()
{
    string firstNameArray[7] = { "Jim", "Tuyet", "Ann", "Roberto", "Crystal", "Valla", "Mathilda" }; //declares and intializes the array

    string name = ""; 
    cout << "What's your name?"; 
    getline(cin, name);

    searchArray(name, firstNameArray[7]); // using the function


    return 0;
}

int searchArray(string name, string &firstNameArray) { //defining the function


    int position = 0; //declaring and intializing the return variable - positions 0 thru 6 for array elements and position 7 for not in array

    for (int i = 0; i < 7; i++) { //looping through the array

        if (firstNameArray[i] == name) //**error code "no operator "==" matches these operands
        {
            position == firstNameArray[i];
        }
        else
        {
            position == 7;
        }

    }

    return position;

}
EN

回答 3

Stack Overflow用户

发布于 2017-04-30 10:45:31

请考虑以下注意事项:

  • 函数原型中不需要&作为指向数组中第一个元素的指针将传递给
  • 您应该将函数赋给一个变量以保存返回值: ex:pos = searchArray(name, firstNameArray);
  • 函数调用中不需要[]
  • 您必须为搜索结果添加输出。
  • 同样不需要在数组参数中引用,即不需要&。在ARR_SIZE.
  • There中,你应该使用=而不是==.
  • You,应该使用0以外的值来初始化位置,ARR_SIZE.
  • There不应该是searchArray内部的

将您的代码与下面的工作代码进行比较:

代码语言:javascript
运行
复制
#include <iostream>
using namespace std;

int searchArray(string , string [], int);

int main()
{
    const int ARR_SIZE = 7;

    string firstNameArray[ARR_SIZE] = { "Jim", "Tuyet", "Ann", "Roberto",
                                 "Crystal", "Valla", "Mathilda" };
    string name = "";
    cout << "\n What's your name? ";
    getline(cin, name);

    int pos = searchArray(name, firstNameArray, ARR_SIZE);

    if (pos == -1)
        cout << "\n Not Found!";
    else
        cout << "\n Fount at position " << pos;

    cout << "\n\n\n";

    return 0;
}

int searchArray(string name, string fNameArray[],const int SIZE) {

    int position = -1;

    for (int i = 0; i < SIZE; i++)
        if (fNameArray[i] == name)
            position = i;

    return position;
}
票数 1
EN

Stack Overflow用户

发布于 2017-04-30 12:55:20

更正/建议-有关评论的更多详细信息:

代码语言:javascript
运行
复制
    //const references
    //use of vector
    //use of vector size variable

    int searchArray(const string & name, const vector<string> & firstNameArray) { 
            int position = -1; //declaring and intializing the return variable - positions 0 thru 6 for array elements and position 7 for not in array

            for (int i = 0; i < firstNameArray.size(); i++) { //looping through the array
                //== is for comparison
                if (firstNameArray[i] == name)
                {
                    position = i; //= is for assignment
                    break; // without break always returns not found
                }
            }
            return position;
        }

        int main(int argc,const char * argv[]) {

            vector<string> firstNameArray = { "Jim", "Tuyet", "Ann", "Roberto", "Crystal", "Valla", "Mathilda" }; //declares and intializes the array

            string name ;
            cout << "What's your name?";

            getline(cin, name);

            cout << "position: " << searchArray(name, firstNameArray) << endl; 


            return 0;
        }
票数 1
EN

Stack Overflow用户

发布于 2017-04-30 10:29:49

searchArray(name, firstNameArray[7]);中,您只需传递一个字符串,而不是字符串数组。在int searchArray(string name, string &firstNameArray)中,通过引用传递数组的语法是不正确的。

我换了几个地方,希望这能有所帮助

代码语言:javascript
运行
复制
int searchArray(string name, string* firstNameArray); // declares the function

int main()
{
    string firstNameArray[7] = { "Jim", "Tuyet", "Ann", "Roberto", "Crystal", "Valla", "Mathilda" }; //declares and intializes the array

    string name = ""; 
    cout << "What's your name?"; 
    getline(cin, name);

    searchArray(name, firstNameArray); // right
    //searchArray(name, firstNameArray[7]); 
    // this will pass a single string, not a string array, the index is out of boundary, the range is 0-6


    return 0;
}

int searchArray(string name, string* firstNameArray) { //pass a pointer
//or int searchArray(string name, string (&firstNameArray)[7])

    int position = 0; //declaring and intializing the return variable - positions 0 thru 6 for array elements and position 7 for not in array

    for (int i = 0; i < 7; i++) { //looping through the array

        if (firstNameArray[i] == name) 
        {
            position = i; //not position == firstNameArray[i]; incompatible type, int and string.
        }
        else
        {
            position = 7;
        }

    }

    return position;

}

参考文献

Passing an array by reference

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43702274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档