我正在读取2个坐标的用户输入,如下所示:
输入coord:10 5
我希望能够在10中读取行,将5作为列。
这就是我所拥有的。
char coord[5];
...
cout << "Enter a coord: ";
cin.getline(coord,sizeof(coord));
row = atoi(coord[0]);
所以代码在atoi()上给我一个错误,如果用户输入一个像10个字符的数字无法真正从索引读取它,你们会怎么做?感谢。
答案 0 :(得分:5)
嗯,您实际上可以使用int
来表示坐标变量,并按以下方式读取它们:
int row;
int column;
std::cout << "Enter a coord: ";
std::cin >> row >> column;
std::cout << "Coords: " << row << " " << column << std::endl;
从你的错误开始:你在atoi
上收到一个错误,因为它获得const char *str
作为参数,并且当你使用一个char数组时,你需要像{{1}那样传递它因为数组是implicity converted a pointer to the first array element(通常被称为“衰变”到指针,因为当你以这种方式传递给函数时,你就失去了对项目调用int row = atoi(coord); // which will read only the first value
的能力)。