如何调用含string与int参数的函数?我的字符串重复函数未正常运行
问题分析与修复方案
你的代码存在两个关键问题,导致调用repeat("str", 5)无法得到预期结果:
1. 传入的参数被函数内部覆盖
你在repeat函数里通过cin重新读取了str和n的值,这直接覆盖了main函数调用时传入的"str"和5。也就是说,你传的参数完全没起作用,实际执行时用的是用户输入的内容。
2. 未输出函数返回结果
main函数中把repeat的返回值存到了repeat_main变量里,但没有打印这个变量,所以即使函数逻辑正确,你也看不到最终结果。
修复后的代码(直接使用传入参数的版本)
#include <iostream> #include <string> using namespace std; string repeat(string str, int n); int main () { string repeat_main; repeat_main = repeat("str", 5); // 新增:打印最终结果 cout << repeat_main << endl; } 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; }
补充:支持用户输入的版本
如果想保留让用户输入内容的功能,应该把输入逻辑放到main函数中,让repeat只负责重复字符串的核心功能,这样函数的通用性更强:
#include <iostream> #include <string> using namespace std; string repeat(string str, int n); int main () { string input_str; int input_n; // 在main中获取用户输入 cout << "enter the word you would like to repeat: "; cin >> input_str; cout << "how many times would you like it to repeat? "; cin >> input_n; string repeat_main = repeat(input_str, input_n); cout << repeat_main << endl; } string repeat(string str, int n) { string repeated_str; int i = 0; while (i < n) { repeated_str += str; i++; } return repeated_str; }
内容的提问来源于stack exchange,提问作者Thegillian
相关产品推荐
相关产品推荐

