我在写Fizz Buzz的时候遇到了一个意想不到的互动。如果我执行std::cout<
,它会自动将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;
}
}
变量i将根据其值和ASCII表转换为一个字符。前几个字符不可见。
将代码更改为从49开始迭代,这是字符“0”的十进制值:
for (int i = 49; i <= 57; i++) {
std::string to_print;
to_print = i;
std::cout << to_print;
}
打印:123456789
没有String::Operator=(int)
,但有String::Operator=(char)
,它被选为最佳可行候选项。
因此,您将代码为1..10的单个字符分配给字符串,这些字符显然会被您的终端打印为空白。
尝试赋值65,它应该打印A
。
问题内容: 我有一个带有3个嵌套数组的简单php结构。 我不使用特定的对象,而是使用2个嵌套循环构建数组。 这是我要转换为Json的数组的var_dump的示例。 在另一个脚本中,我具有类似的结构并且工作正常。所以我不明白为什么在这里不起作用。 编辑:似乎有编码问题。当返回ASCII,该作品但当它返回UTF8,它不工作了。 Edit2:返回表示:格式错误的UTF-8字符,可能编码不正确。 问题答案
问题内容: 这可能是最简单的事情之一,但我看不到自己在做错什么。 我的输入包括一个带有数字的第一行(要读取的行数),一串包含数据的行和最后一行仅包含\ n的行。我应该处理此输入,并在最后一行之后做一些工作。 我有这个输入: 对于读取输入,我有以下代码。 我的问题是为什么我什么都不打印?程序读取第一行,然后不执行任何操作。 问题答案: 不读取以下换行符,因此第一个(返回 当前 行的其余部分 )将始终
问题内容: 在回答了这个问题之后,我很困惑为什么这段代码中的整数溢出而不是负数。奇怪,为什么这么精确的数字?为什么是0? 输出: 问题答案: 仅当的起始值为偶数时,才会发生这种情况。 根据JLS§15.17.1: 如果整数乘法溢出,则结果是数学乘积 的低阶位 ,以某种足够大的二进制补码格式表示。结果,如果发生溢出,则结果的符号可能与两个操作数值的数学积的符号不同。 如果我们以二进制格式而不是十进制
我在下面有一个java程序: 现在,我想将两个字符串值“加纳”或“加纳”分配给“National”变量,这样当用户输入“加纳”或“加纳”时,当程序将“nation”值检查为“National”值,然后执行“if”块中的语句时,条件变为真。 但是有了我上面的代码,程序只有在用户输入“加纳”时才会执行“如果”语句;程序在用户输入“加纳”时才会执行“其他”语句。 请帮帮我。 谢谢你。
问题内容: 例如: 问题答案: 这是因为从索引0 in开始的长度为0的子字符串等于空字符串: 当然,任何字符串的长度为零的 每个 子字符串都等于空字符串。
考虑下面的代码。 我理解在这里工作的等号操作符,因为我们隐式地转换为对象,等号操作符正在检查两者的引用是否相等并返回false。 但我对第二个问题感到困惑,返回true看起来像是调用字符串类型提供的Equals override实现,如果它们相等,它会检查字符串的内容。 我的问题是,为什么它也不检查运算符的内容平等性,它们的实际类型是string而不是object。正当 而下面的代码为两者输出tu