为什么将整数分配给字符串会导致空白?

我正在尝试编写 Fizz Buzz,但遇到了意想不到的互动。如果我这样做std::cout << i,它会自动将 i (int) 转换为字符串并打印出来?但是如果分配i给一个字符串变量,它会打印一个空白吗?我设法通过使用来解决它std::to_string,但我只是想知道为什么打印to_print打印空白而不是整数或抛出某种错误?

#include <iostream>
#include <string>

int main() {
    for (int i = 1; i <= 10; i++) {
        // prints i
        std::cout << i;
    }
    
    std::cout << std::endl;
    
    for (int i = 1; i <= 10; i++) {
        std::string to_print;
        to_print = i;
        // prints blank rather than i
        std::cout << to_print;
    }
}

回答

没有string::operator=(int),但有string::operator=(char),它被选为最佳可行候选者。

因此,您将代码为 1..10 的单个字符分配给字符串,显然您的终端将其打印为空白。

尝试分配 65,它应该打印A.


以上是为什么将整数分配给字符串会导致空白?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>