【发布时间】:2018-10-27 23:00:33
【问题描述】:
我有一个简单的功能,可以将文本行打印到控制台,居中,空白区域用“=”符号填充。当我在 Linux 上使用我的程序运行此功能时,我看到文本正确显示在控制台窗口的顶部,然后是我的程序的菜单提示,但在 Windows 上它什么也不打印并直接跳到菜单提示。这两个程序都使用带有 -std=c++11 的 GNU gcc 在代码块中编译和运行。
void _print_center(vector<string>& tocenter)
{
int center;
for ( int x; x<static_cast<int>(tocenter.size());x++ )
{
char sfill = '=';
string line = tocenter[x];
center = (68/2)-(tocenter[x].length()/2);
line.replace(0, 0, center, sfill);
cout << std::left << std::setfill(sfill);
cout << std::setw(68) << line << endl;
}
}
【问题讨论】:
-
int x未初始化。你在这里依赖未定义的行为,理论上可以做任何事情(例如从这个星球的脸上抹去人类)。 -
@ArnavBorborah 谢谢!那成功了。你是对的:在尝试使用变量之前,我应该始终初始化它们。我真的很惊讶这可以在 any 系统上运行!
标签: c++ linux windows console codeblocks