【问题标题】:C++ Stack Overflow what is causing it?C++ Stack Overflow 是什么原因造成的?
【发布时间】:2021-05-23 15:12:24
【问题描述】:

我是 C++ 新手,写了以下内容:

class Solution {
public:
    vector<string> fizzBuzz(int n) {
        vector<string> result(n);
        for (int i=1;i<=n;++i)
        {
            if (i%3==0 and i%5==0)
                result[i-1]="FizzBuzz";
            else if (i%3==0)
                result[i-1]="Fizz";
            else if (i%5==0)
                result[i-1]="Buzz";
            else result[i-1]=""+i;
        }
        return result;
    }
};

当输入为 1 时出现溢出错误,这是为什么呢?最后一行似乎是问题,但我认为它完全没问题。

【问题讨论】:

标签: c++ string vector


【解决方案1】:

表达式""+i 不会将i 中的整数值转换为字符串。相反,它与&amp;(("")[i]) 相同。 IE。它是指向字符串"" 的第i 个值的指针。这超出了范围,因为空字符串在索引 0(字符串终止符)处只有一个元素。

改用std::to_string

result[i-1]=std::to_string(i);

【讨论】:

  • 谢谢,根据您的经验,哪种方法更快?使用 % 还是因为输入继续使用计数器(直到 3 和 5)?
猜你喜欢
  • 2015-01-07
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-01
  • 2012-07-27
相关资源
最近更新 更多