我有一个声明如下的矢量:
vector < vector<char> > v;
依赖玩家我想将x或o插入向量中。我是这样做的:
v[y][x]= set%2 ? 'o':'x';
在我的向量中而不是o或x我得到:120'x'。为什么?我该怎么做只插入x?
答案 0 :(得分:4)
问题在于你最有可能将char打印为整数,这样就可以为'x'提供120。请参阅ascii table。
正如@ us2012指出的那样,考虑一下您对如何看待价值的评论:
在调试器中我得到这样的值:{move = 0 win = false v = [2]([2](120'x',0),2)} game_size * const
这只是显示额外信息的调试器。
如果要打印该值,可以选择确切的表示形式 - 使用printf
参数,或static_cast
'打印您要打印的内容。
使用以下方式打印:
std::cout << v[y][x] << std::endl;
会给你'x',因为矢量会存储char
。
如果您想以小数形式查看,只需使用:
std::cout << static_cast<int>(v[y][x]) << std::endl;