c++ - 似乎无法打印出我的字符串

标签 c++

所以这是我的代码片段:

    void reverse(string query, string reverseQuery) {
        unsigned int i;

        for(i=0; i<query.length(); i++) {
            reverseQuery[i] = query[query.length()-1-i];
        }
        cout << reverseQuery << endl;
        return;
    }

iostream、string 和 using namespace std 的 header 也包含在代码中。我面临的问题是,当我尝试输出字符串 reverseQuery 时,没有任何结果。任何人都知道为什么?谢谢!

最佳答案

你的片段应该是这样的:

std::string reverse(const string& query) {
    std::string reverseQuery(query.length(),0); // <<<<< Ensure that the size is the same
    for(unsigned i=0; i<query.length(); i++) {
        reverseQuery[i] = query[query.length()-1-i];
    }
    // cout << reverseQuery << endl;
    return reverseQuery;
}

用标准的 c++ 字符串实现更短和惯用代码的方法是

std::string reverseQuery(query);
std::reverse(std::begin(reverseQuery),std::end(reverseQuery));

关于c++ - 似乎无法打印出我的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42176158/

相关文章:

c++ - 让 VS 编译器捕捉有符号/无符号的赋值?

c++ - CImg 没有正确显示透明的 png 图像?

c++ - Windows Readfile 返回 ERROR_INVALID_PARAMETER 87

c++ - 从 vector 列表中删除 vector 元素 C++

c++ - 为什么绑定(bind)到三元的 const 引用会生成拷贝?

c++ - 为什么两个using子句解析为同一类型在gcc中被视为模棱两可

c++ - protected 外部资源使用

c++ - 如何在 GCC 主干中使用 <stacktrace>?

c++ - 当对象引用作为参数传递时,为什么析构函数在函数作用域结束后调用?

c++ - 锁定互斥量与访问磁盘