C++ 无法处理新行'\n';字符串中的分隔符
我正在尝试使用以下代码反转字符串:C++ 无法处理新行'\n';字符串中的分隔符,c++,string,algorithm,C++,String,Algorithm,我正在尝试使用以下代码反转字符串: string reverseStringHelper(const char* s, bool flag) { if(*s == '#') { return ""; } if(flag) { return reverseStringHelper(s+1, 0) + *s + "\0"; } else { return rever
string reverseStringHelper(const char* s, bool flag) {
if(*s == '#') {
return "";
}
if(flag) {
return reverseStringHelper(s+1, 0) + *s + "\0";
} else {
return reverseStringHelper(s+1, 0) + *s;
}
}
string reverseString(string s) {
s = s+'#';
return reverseStringHelper(s.c_str(), 1);
}
我非常适合以下测试用例:
“你好”
,“你好世界”
但在以下情况下失败:
"Hello World
New World!"
为什么有人能解释 < P>我不知道为什么你要添加<代码> < <代码>字符>代码> CySTR 将给你一个空结尾字符串的指针,但是如果你想要一个C++更友好的方法来反转一个字符串,只需使用<代码> RCAST/<代码>和<代码> ReNe//C> >:
std::string text = "Hello, world";
std::string reversed(text.rbegin(), text.rend());
尝试使用较短的字符串(这样就不会有太多递归调用),然后在调试器中单步执行代码,逐步执行递归调用。检查<代码> S/S>和<代码> *S/<代码>以及先前调用的递归调用(可能希望使用临时变量来存储结果,以便调试更容易)。您能解释它是如何失败的吗?我不知道C++标准库,但是<代码> STR+“0”<代码>产生了不同于