C++ C++;“错误”;并非所有控制路径都返回一个值";
我试图通过调用函数来输出字符串的倒数。我想我的反转功能有问题。 我不断收到错误“并非所有控制路径都返回值”C++ C++;“错误”;并非所有控制路径都返回一个值";,c++,C++,我试图通过调用函数来输出字符串的倒数。我想我的反转功能有问题。 我不断收到错误“并非所有控制路径都返回值” #包括 使用std::cout; 使用std::endl; 使用std::cin; int LengthofString(char*);//声明字符串长度的原型 倒整数(字符*); int main() { charstring1[100]; coutstring1; cout在reverse函数中,您在for循环内返回,如果满足条件,则可能不会执行。请尝试将return语句移到循环外 您
#包括
使用std::cout;
使用std::endl;
使用std::cin;
int LengthofString(char*);//声明字符串长度的原型
倒整数(字符*);
int main()
{
charstring1[100];
coutstring1;
cout在reverse
函数中,您在for
循环内返回
,如果满足条件,则可能不会执行。请尝试将return语句移到循环外
您的返回变量也在循环的作用域中声明,因此您也需要更改它,但这至少会修复您的原始错误。在reverse
函数中,您在for
循环中返回,如果满足条件,可能不会执行该循环。请尝试将return语句移到循环
您的返回变量也在循环的作用域中声明,因此您也需要更改它,但这至少会修复您的原始错误。当您传递空字符串或长度为1的字符串时,将不会执行以下for
循环中的return
语句
for(ii=0; ii<n/2;ii++) {
char temp;
temp = y[ii];
y[ii] = y[n - ii - 1];
y[n - ii] = temp;
return temp;
}
for(ii=0;ii当传递空字符串或长度为1的字符串时,将不会执行以下for
循环中的return
语句
for(ii=0; ii<n/2;ii++) {
char temp;
temp = y[ii];
y[ii] = y[n - ii - 1];
y[n - ii] = temp;
return temp;
}
for(ii=0;iiint反转(char*y)
{
int ii,n;
n=长度管柱(y);
对于(ii=0;iiint反转(char*y)
{
int ii,n;
n=长度管柱(y);
对于(ii=0;ii您的reverse
函数是非常错误的:当您希望它反转字符串时,它如何返回int
?有几种方法可以修复它:
- 删除
返回
,并使函数无效
。打印前调用该函数,然后输出原稿
- 使其返回
char*
,并返回y
。将return
语句移出循环
- 不要原地反转:制作字符串的副本并反转它;不要忘记为空终止符分配空间,并在完成后删除字符串的副本
您的reverse
函数非常错误:当您希望它反转字符串时,它如何返回int
?有几种方法可以修复它:
- 删除
返回
,并使函数无效
。打印前调用该函数,然后输出原稿
- 使其返回
char*
,并返回y
。将return
语句移出循环
- 不要原地反转:制作字符串的副本并反转它;不要忘记为空终止符分配空间,并在完成后删除字符串的副本
除了已有的优秀答案,让我来演示一下如何反转一个字符串<强> C++方式:/P>
#include <string>
#include <iostream>
#include <algorithm>
int main()
{
std::string s;
std::cin >> s;
std::reverse(s.begin(), s.end());
std::cout << s << std::endl;
return 0;
}
除了已有的优秀答案,让我来演示一下如何反转一个字符串<强> C++方式:/P>
#include <string>
#include <iostream>
#include <algorithm>
int main()
{
std::string s;
std::cin >> s;
std::reverse(s.begin(), s.end());
std::cout << s << std::endl;
return 0;
}
@SamIam什么?for(ii=0;ii@SamIam(是时候让你的高人一等休息一下了。取消你的否决票,这是不公平的。)@H2CO3当for循环和return
之间有一个分号时,return index
怎么会在for循环中?@SamIam阅读了这段引文。我们谈论的是另一个循环。@SamIam What?for(ii=0;ii@SamIam(是时候让你的高人一等休息一下了。取消你的否决票,这是不公平的。)@H2CO3当for循环和return
之间有分号时,return index
怎么会在for循环中?@SamIam阅读了这段引文。我们谈论的是另一个循环。不仅空字符串,长度为1的字符串也不会进入循环。不仅空字符串,长度为1的字符串也不会进入循环也输入循环。@H2CO3,在reverse
中。实际上,如果n
为0(或1,或以某种方式为负数),则for循环将不会执行,并将从函数结尾处运行。@chris,是的,当然。(你的人无法使用-Wall
?)H2CO3,在reverse
中。实际上,如果n
为0(或1,或以某种方式为负数),for循环将不会执行,并将从函数末尾运行。@克里斯:哦,是的,当然。(你的人无法使用-Wall
?)编译)我必须使用我自己的函数。@ BIDNATEDUCTION更新-您的代码仍然是C而不是C++。我必须使用我自己的函数。@ BIDNATE见Update——您的代码仍然是C而不是C++。
std::string reverseString(const std::string &input)
{
std::string res;
for (std::string::const_reverse_iterator it = input.rbegin(); it != input.rend(); it++)
res += *it;
return res;
}