【问题标题】:C++ Char Array Find / Replace a charC++ Char Array 查找/替换一个字符
【发布时间】:2018-03-27 15:00:38
【问题描述】:

所以基本上我有一个如下所示的数组:

char array[25];

我有一个“X”和 24 个“O”。我正在尝试创建一个函数,我可以在其中找到“X”在数组中的位置,这样我就可以在输入控件时移动它。这里有一些代码可以让我了解我的想法,我只是不能放在一起。

int findX(){
    //make this find the location of X out of the 25 char array.
    //then return the slot of X as a number, like if it's in the 20th slot, then  it will return 20 ?
    //return(locationOfX);
}

【问题讨论】:

  • 也许你需要a good beginners book?因为它应该教会你自己解决问题所需要知道的一切。
  • 使用 std::string!

标签: c++ arrays replace find


【解决方案1】:
for(int i = 0; i <= array.Length; i++)
{
    if(array[i] == 'X')
    {
        return i;
    }
}

这应该可以,我没有机会测试它,但它应该可以工作

【讨论】:

    【解决方案2】:

    我认为 Ron 的回答更正确,因为实际上我认为在 C 中没有像“XXX.length()”这样的函数,所以你需要将数组的长度传递给函数。

    【讨论】:

    • 虽然我很欣赏反馈,但我想指出 cmets 应该作为 cmets 发布,而不是作为答案发布。请建立一些代表以便能够发布 cmets。
    【解决方案3】:

    传入数组和元素个数。
    1. 手动方法:

    int findX(char arr[], int count){
        for (int i = 0; i < count; i++){
            if (arr[i] == 'X'){
                return i;
            }
        }
        return -1;
    }
    

    2。使用std::find函数:

    int findX2(char arr[], int count){
        return std::find(arr, arr + count, 'X') - arr;
    }
    

    std::distance 函数略有不同:

    int findX2(char arr[], int count){
        return std::distance(arr, std::find(arr, arr + count, 'X'));
    }
    

    3。传入数组的开头和结尾:

    int findX3(char* arrbegin, char* arrend){
        return std::distance(arrbegin, std::find(arrbegin, arrend, 'X'));
    }
    

    并像这样使用:

    std::cout << findX3(std::begin(arr), std::end(arr));
    

    4。模板函数留作练习。
    话虽如此,与原始数组相比,更喜欢std::vectorstd::array

    【讨论】:

      【解决方案4】:

      在 C 语言中,您可以使用 strstr 函数。

      #include "string.h"
      int findX(char array[])
      {
         char *result = strstr(array, "s");
         return result - array;
      }
      int main()
      {
         char array[25];
         int index = findX(array);
      }
      

      在 C++ 中使用 std::find() 或将 array 更改为 std::string 并使用 string::find

      代码如下:

      #include <string>
      
      int main()
      {
          std::string array = "oooooooooosoooooooooooooo";
          int index = array.find("s");
          return 0;
      }
      

      【讨论】:

      • strstr 要求参数是字符串。 OP 的数组不是以 null 结尾的,因此不是字符串。
      猜你喜欢
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多