C++为什么我在this的输出中得到尾随空格?[duplicate]

kmbjn2e3  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(133)

此问题在此处已有答案

Array index out of bound behavior(共10个答案)
5天前关闭。
这是一个我一直在为这个代码战问题工作的解决方案:https://www.codewars.com/kata/56a5d994ac971f1ac500003e/cpp
我希望输出是"abigailtheta"。我在vscode上得到了正确的输出,在从终端编译代码时也得到了正确的输出。但是codewars站点显示输出是"abigail,这告诉我在我的输出中有空格尾部,这是我以前没有看到的(终端和vscode的输出没有字符串格式)。知道最后的空格是从哪里来的吗?

#include <iostream>
#include <string>
#include <vector>
#include <numeric>

class LongestConsec
{
public:
    static std::string longestConsec(const std::vector<std::string> &strarr, int k)
    {
        std::string concChars{};
        std::string maxChars{};
        for (int i{}; i < strarr.size(); ++i)
        {
            concChars = strarr[i];
            for (int y{i + 1}; y < (i + k); ++y)
            {
                concChars += strarr[y];
            }
            maxChars = (maxChars.length() < concChars.length()) ? concChars : maxChars;
        }
        return maxChars;
    }
};

int main()
{
    LongestConsec a;
    std::vector<std::string> v{"zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"};
    std::cout << a.longestConsec(v, 2) << '\n';
    return 0;
}
mnowg1ta

mnowg1ta1#

我觉得你的问题就出在这里。

for (int y{i + 1}; y < (i + k); ++y)
{
     concChars += strarr[y];
}

如果i+k >= strarr.size()会发生什么?当y大于strarr.len()-1时,strarr[y]是什么?它可以是空白,或者一些奇怪的字符,或者更好的是,它会使你的程序崩溃。

相关问题