2017-05-07 129 views
-2

我无法弄清楚的家庭作业问题。甚至不会说谎。假设我的函数找到正在搜索的字符时返回数组索引,如果没有找到字符,则返回-1。相反,它返回存储在数组元素中的值。即我输入“这是我的字符串”,它应该返回8,但是它返回109(ASCII码为M)。我想返回数组索引,而不是数组值

int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (i = character) { 
      return i; 
     } 
     return -1; 
    } 
} 

我正在休息一天的作业,但任何意见将不胜感激。也许我会以清新的眼光明天看到问题。

+4

'(I =字符)' - >'(I ==字符)' - >'(阵列[I] ==字符)' – DeiDei

+0

扰流:还有另一个问题。继续寻找;) – Quentin

回答

1
int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (i **==**character) { 
      return i; 
     } 
     return -1; 
    } 
} 

在你的循环中,我=字符不是比较,它是一个assignement。在C++中,比较运算符是==。

在一个侧面说明,你可以通过功能find()

编辑

我没有看到你更换整个功能是,你如果是错的,你太。

这里是一个代码的工作片:

#include<string> 
#include<iostream> 
int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (array[i] == character) { 
      return i; 
     } 

    } 
    return -1; 
} 

int main(){ 
std::string meh = "meh"; 
std::cout << search(meh,'e') << std::endl; 

} 

首先错误,则必须与字符阵列,而不是计数器(i)的元素进行比较。 第二个错误,如果您的工作失败,则返回-1。但是如果字符不是字符串中的第一个字符,它将会失败。

感谢@常常让我再看看。

+0

关联分配。但这只是这个代码的一个问题。 – Quentin

+0

非常感谢......我最初有两个相同的东西,但是在我尝试其他任何东西的时候都必须改变它。阵列[我]是一件大事,搞砸了我,所以谢谢你的提示。这是我无法弄清的作业中唯一的问题。再次感谢。附:我无法赞成你的回应,因为人们低估了我的清晰不讨好的问题,否则我会。 – Sean

0
#include <iostream> 
int search(const std::string &array, char character); 
int main() { 
const std::string string1 = "daidalos"; 
std::cout << search(string1, 'i'); 
return 0; 
} 
int search(const std::string &array, char character) { 
for (int i = 0; i < array.length(); i++) { 
    if (array[i] == character) { 
     return i+1; 
    } 
} 
return -1; 
} 

输出: 3意味着第三位(真)。但是,如果你想返回字符串的多个索引,您可以使用std::pairstd::tupple

1

的std :: string :: find()方法返回正是你想要的:

std::size_t search(const std::string& array, char character) 
{ 
    return array.find(character); // if 'character' is not found returns std::string::npos 
} 

如果你不想使用它:

std::size_t search(const std::string& array, char character) 
{ 
    for(std::size_t i=0; i<array.size(); ++i) 
     if(array[i]==character) return i; 
    return -1; 
} 
+0

我想使用它,但我的老师不想让我。我猜,因为我显然需要更多的数组/循环练习。 – Sean

0

Excatly什么,我一直在寻找。

#include<string> 
#include<iostream> 
int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (array[i] == character) { 
      return i; 
     } 

    } 
    return -1; 
} 
相关问题