[英]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::vector或std::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.