我正在使用C ++(Tic Tac Toe)编写一个小游戏,并且在打印电路板时遇到问题。
这是代码(“syntax.h”是一个包含print,println,input等函数的头文件):
#include "syntax.h" // contains helpful functions such as "print" and "println" to shorten code
char board[3][3];
void print_board();
int main()
{
print_board();
}
void print_board()
{
for (int i = 0; i < 3; i++)
{
println("-------");
for (int j = 0; j < 3; j++)
{
print("|" + board[i][j] + " "); // ERROR - Cannot add two pointers
}
println("|");
}
println("-------");
input();
}
print
是“syntax.h”中的一个函数,它接收一个字符串变量并用cout
打印它,然后刷新输出缓冲区。
现在,我无法打印上面的字符串,因为它告诉我我不能添加两个指针。
我理解为什么会发生这种情况,因为打印参数中的“”实际上是char*
而不是string
变量,我无法将它们添加到一起。
问题是我也不想进行另一个打印函数调用,并在同一函数调用中打印所有这3个字符串。
那么我怎么能在没有错误的情况下打印上面的内容呢?
答案 0 :(得分:2)
使用sprintf()函数:
//print("|" + board[i][j] + " "); // ERROR - Cannot add two pointers
char buffer[100];
sprintf(buffer, "| %s ", board[i][j]);
print(buffer);
如果你想使用字符串类型可以这样做:
//print("|" + board[i][j] + " "); // ERROR - Cannot add two pointers
print(string("|") + string(board[i][j]) + string(" "));
答案 1 :(得分:2)
而不是
print("|" + board[i][j] + " ");
尝试
print((std::string("|") + board[i][j] + " ").c_str())
std :: string有一个重载的运算符+用于连接。别忘了
#include <string>