C ++ - 如何正确打印?

时间:2014-06-15 13:31:58

标签: c++ string pointers tic-tac-toe

我正在使用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个字符串。

那么我怎么能在没有错误的情况下打印上面的内容呢?

2 个答案:

答案 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>