编写递归字符串函数
Writing a recursive string function
编写一个递归的字符串值函数 replace,它接受一个字符串并返回一个由原始字符串组成的新字符串,每个空格都替换为星号 (*) 替换字符串中的空格涉及:
如果字符串为空则不执行任何操作
否则: 如果第一个字符不是空白,只需将其连接起来,替换字符串的其余部分即可
如果第一个字符为空白,则连接一个 *,以替换字符串的其余部分
这是我尝试过的:
string replace(string sentence){
if(sentence.empty()) return sentence;
string newString;
if(sentence[0] == " ") {
newString.append('*' + sentence.substr(1, sentence.length()));
} else {
newString.append(sentence.substr(1, sentence.length()));
}
return replace(newString);
}
但是测试代码正确答案的网站给了我以下错误:
CTest1.cpp:在函数 'std::string replace(std::string)' 中:
CTest1.cpp:9:错误:ISO C++禁止指针和整数之间的比较
请注意,错误中的行不一定与代码中的实际行相关。
有什么建议吗?
更新
使用以下代码解决了它:
string replace(string sentence){
if(sentence.empty()) return sentence;
string newString;
if(sentence[0] == ' ') {
newString.append("*" + replace(sentence.substr(1)));
} else {
newString.append(sentence[0] + replace(sentence.substr(1)));
}
return newString;
}
string sentence;
if(sentence[0] == " ")
" "
不是单个字符,而是整个字符串。如果需要单个空白,请使用' '
- 在 if(句子[0] == " ") 中,句子 [0] 是一个字符(在比较过程中可以转换为其 ascii 值(整数)," " 是空字符串或指向空字符串中第一个字符的指针。这就是引发错误的原因。
- 而是做 if(句子[0] == ' ')。我也不确定C++,但在 java == 中检查引用的相等性。所以也要照顾好它。
- 此外,您还需要附加替换字符串其余部分的结果,而不仅仅是字符串的其余部分。为此编写一个递归函数
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何从void函数输出字符串
- 使用用户定义函数的字符串反转
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- 在c++构造函数中使用随机字符串生成器
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- C++:如何使函数只返回作为列表一部分的字符串
- 如何在C++中的同一函数中使用字符串和双精度
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 一个函数,用于查找字符串1包含字符串2 c++的次数
- 对函数 PlaySound 使用字符串变量
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- Visual c ++,使用字符串引用/指针调用 dll 函数
- 构造函数字符串参数未设置窗口标题
- C++默认构造函数:字符串参数与字符串参数()
- 使用函数C++字符串输入
- c++模板函数字符串类型不匹配