为什么将整数分配给字符串会导致空白?
我正在尝试编写 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
.