C++ 将字符转换为int?
我正在制作一个战舰游戏,所以当我将诸如“A10”之类的内容传递到坐标函数中时,它需要将列转换为字母,将行转换为数字C++ 将字符转换为int?,c++,C++,我正在制作一个战舰游戏,所以当我将诸如“A10”之类的内容传递到坐标函数中时,它需要将列转换为字母,将行转换为数字 Coordinate(std::string coord = "A10") { char c = coord[0]; col = c - 16; int r = atoi((coord.substr(1,2)).c_str()); row = r-1; }; 所以在这个例子中,通过A10应该使col
Coordinate(std::string coord = "A10")
{
char c = coord[0];
col = c - 16;
int r = atoi((coord.substr(1,2)).c_str());
row = r-1;
};
所以在这个例子中,通过A10应该使col=0(A=0,B=1,C=2)和row=9
等于9的行似乎有效,但等于0的列无效。应该是
col=c-'A'
才能获得A的整数。您是否试图将'A'的值映射为零?请记住,字符是单字节整数
char c = std::toupper( coord[0] );
if( c >= 'A' && c <= 'Z' )
{
col = c - 'A';
}
else
{
// TODO: Invalid/error?
}
charc=std::toupper(coord[0]);
如果(c>='A'&&c你所说的字符'A'只是数字65(其ASCII值)的有趣名称。
根据,'B'=66,'C'=67等等。那么您应该做的是计算int column=static\u cast(坐标[0]-'A')
A(0x41)的十进制值
是65
,所以你现在的数学成绩是49。col=c-65
应该会给你想要的行为。你可以用一个自定义的文本来扩展你的类。例如:A10_c
。你甚至应该检查传递的字符串的格式是否正确,否则会抛出一个异常。但是每个字母呢?@RBowen:该代码对每个字母都有效,对于A
它对B
1返回0,以此类推。