繁体   English   中英

C++ 字符数组查找/替换字符

[英]C++ Char Array Find / Replace a char

所以基本上我有一个看起来像这样的数组:

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);
}
for(int i = 0; i <= array.Length; i++)
{
    if(array[i] == 'X')
    {
        return i;
    }
}

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

传入数组和元素数。
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

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

在 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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM