无法在字符串中处理新行'\ n'分隔符

时间:2016-04-28 10:29:53

标签: c++ string algorithm

我正在尝试使用以下代码反转字符串:

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""Hello World"

但是对于以下情况失败:

"Hello World
New World!"

为什么有人能解释一下?

1 个答案:

答案 0 :(得分:3)

我不确定你为什么要添加#字符,因为c_str会给你一个指向空终止字符串的指针,但如果你想要一个更加C ++友好的方式来反转一个字符串只需使用rbeginrend

std::string text = "Hello, world";
std::string reversed(text.rbegin(), text.rend());