我有一个问题,为什么我的代码没有被正确调用。我觉得我有90%的正确率。我的代码是为了重复单词“n”的次数。
string repeat(string str, int n);
int main ()
{
string repeat_main;
repeat_main = repeat("str", 5);
}
string repeat(string str, int n)
{
string repeated_str;
int i = 0;
cout << "enter the word you would like to repeat: ";
cin >> str;
cout << "how many times would you like it to repeat? ";
cin >> n;
while (i < n)
{
repeated_str += str;
i++;
}
return repeated_str;
}
我试着在我的主函数中调用repeat函数,它不显示我要找的东西。
2条答案
按热度按时间9bfwbjaz1#
据我所知,你的代码有两个问题:
main
之后定义该函数,则需要向前声明该函数。cout << repeat_main
,以便打印字符串。正如注解中所指出的,如果你只是让你的函数提示输入,那么你可以删除无用的参数。
或者保留它们,并使用它们来处理
main
中的IO。yeotifhr2#
你几乎就完成了。你没有显示重复的字符串。我解决了你的问题,同时也提高了可读性和可维护性:
main()
中完成的。for()
循环比while()
更可读。也许你在一所学校,强制执行完全愚蠢的代码风格,禁止使用for()
?要知道,你不能在校外这样编码。using namespace
,它们的存在是为了将函数名从不同的源中分离出来。在那里几乎没有问题,当你开始添加多个依赖项时,你会**运行在麻烦中(两个命名空间都定义了自己的string
),不要养成using namespace
的坏习惯。const std::string&
,除非你知道不需要它。没有&
,你通过值传递参数,所以所有的函数调用都会复制字符串,使用&
,你通过引用传递,所以函数中对象的任何操作都会发生在调用函数中的对象上。除了int,float,booleans,指针和枚举之外,99%的情况下都要通过引用。const
,它允许你在函数中使用const std::string
对象,并且(最重要的)防止意外的字符串修改,编译会失败。str
参数没有任何意义。它的内容从未使用过,因为它是通过复制传递的,并被cin >> std
完全擦除,它应该是一个变量。下面的代码使用了str
参数。