我写了这段代码,希望改变控制台窗口的颜色:
char r[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
while(true) {
cout <<"ololol";
system("color "<<r[rand()%15]<<r[rand()%15]);
}
我从编译器收到此错误消息:
错误E2087 seizure.cpp 11:在函数main()
中非法使用指针
我的代码出了什么问题?
答案 0 :(得分:2)
试试这个:
std::ostringstream cmd;
cmd << "color " << r[rand()%15]<<r[rand()%15];
system(cmd.str().c_str());
您使用ostringstream进行格式化。 .str()
为您提供std::string
。 .c_str()
为您提供了一个c风格的字符串,这是system
所需要的。
进行测试时,请尝试以下方法:
std::ostringstream cmd;
cmd << "color " << r[rand()%15]<<r[rand()%15];
// system(cmd.str().c_str());
std::cout << cmd.str() << "\n";
这样,你就可以看到你的字符串格式是否意外地炸毁了显示器。