我正在尝试从 VBA 中建立我在 C++ 方面的整体专业知识,所以请原谅我的代码有任何明显的问题......使用下面这个简单的程序,我得到了意想不到的输出。
#include <iostream>
int main() {
char f[]="", c[]="";
std::cin >> f;
std::cout << f << std::endl;
std::cin >> c;
std::cout << f << std::endl;
return 0;
}
运行时,这是我的结果:
ABC(输入)
f - ABC(输出)
DEF(输入)
f - EF(输出)
还尝试如下:
ABC DEF(输入)
f - ABC(输出)
f - EF(输出)
我希望这两行的输出是相同的,因为我认为我只读了f
一次。此外,如果我cin
将其应用于f
,为什么第一次尝试读取整个字符串 ( ABC
) 而第二次尝试缺少D
?
我也尝试使用此代码打印结果,但发生了同样的问题,所以我在这里假设这是cin
and not的问题cout
。
for (j=0;j<3;j++) {
std::cout << f[j];
}
std::cout << std::endl;
做了一些研究,我发现了这个问题,看起来很有希望,但是当我将声明从 更改char f[]
为 时char *f
,我最终在 上出现了 SEGFAULT cin
,而const char *f
甚至无法编译。
我在这里盲目地摸索,希望能得到一些关于如何正确使用cin
和/或char
数组的指导。
重申我的问题:为什么 outputstd::cout << f << std::endl;
虽然没有明确地重新分配值,但会以这种方式变化?