C++ 中是否有 Python fstring 或字符串格式等效项?
Is there a Python fstring or string formatting equivalent in C++?
我正在用 C++ 开发一个项目,我需要制作一个包含数组元素的字符串。我知道在 python 中有 sting formatting
和 fstrings
之类的东西,但我不知道 C++ 是否有任何等价物。我不知道这是否是一回事,所以我认为这是最好的询问地点。我正在制作一个井字游戏,我已经制作了棋盘,并且我已经制作了棋盘上的位置。我想做的就是优化电路板,这样我就可以从一个函数调用另一个函数,并让父函数 return 电路板,这样我就可以使用它了。我如何做到这一点的基本想法是把板子变成一个大字符串,里面有一堆换行符和数组元素。我还在一个函数中制作了它,所以我可以在任何需要的地方调用它并将它放在那里。这是我制作的板功能:
void board(){
char board_pos[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
cout << " | | " << endl;
cout << " " << board_pos[0][0] << " | " << board_pos[0][1] << " | " << board_pos[0][2] << " " << endl;
cout << " | | " << endl;
cout << "-----------------" << endl;
cout << " | | " << endl;
cout << " " << board_pos[1][0] << " | " << board_pos[1][1] << " | " << board_pos[1][2] << " " << endl;
cout << " | | " << endl;
cout << "-----------------" << endl;
cout << " | | " << endl;
cout << " " << board_pos[2][0] << " | " << board_pos[2][1] << " | " << board_pos[2][2] << " " << endl;
cout << " | | " << endl;
}
编辑:多亏了你们的帮助我弄明白了,我真的很感激。 :)
我只想 return 您用来固定电路板的类型。在您的情况下,您从 char[3][3]
.
开始
我会使用 C++11 编写 array
:
using Row = std::array<char, 3>;
using Board = std::array<Row, 3>;
现在可以制作各种功能了:
void move(char player, Board const& b, int row, int col);
bool is_game_over(Board const&);
void print(Board const& b);
等等
您的打印函数可以是:
void print(Board const& b)
{
std::cout << " | | \n";
auto print_row = [](Row const& row) {
std::cout << " " << row[0] << " | " << row[1] << " | " << row[2]
<< " \n";
};
print_row(b[0]);
std::cout << " | | \n";
std::cout << "-----------------\n";
std::cout << " | | \n";
print_row(b[1]);
std::cout << " | | \n";
std::cout << "-----------------\n";
std::cout << " | | \n";
print_row(b[2]);
std::cout << " | | \n";
}
看到了Live
版画
| |
1 | 2 | 3
| |
-----------------
| |
4 | 5 | 6
| |
-----------------
| |
7 | 8 | 9
| |
我正在用 C++ 开发一个项目,我需要制作一个包含数组元素的字符串。我知道在 python 中有 sting formatting
和 fstrings
之类的东西,但我不知道 C++ 是否有任何等价物。我不知道这是否是一回事,所以我认为这是最好的询问地点。我正在制作一个井字游戏,我已经制作了棋盘,并且我已经制作了棋盘上的位置。我想做的就是优化电路板,这样我就可以从一个函数调用另一个函数,并让父函数 return 电路板,这样我就可以使用它了。我如何做到这一点的基本想法是把板子变成一个大字符串,里面有一堆换行符和数组元素。我还在一个函数中制作了它,所以我可以在任何需要的地方调用它并将它放在那里。这是我制作的板功能:
void board(){
char board_pos[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
cout << " | | " << endl;
cout << " " << board_pos[0][0] << " | " << board_pos[0][1] << " | " << board_pos[0][2] << " " << endl;
cout << " | | " << endl;
cout << "-----------------" << endl;
cout << " | | " << endl;
cout << " " << board_pos[1][0] << " | " << board_pos[1][1] << " | " << board_pos[1][2] << " " << endl;
cout << " | | " << endl;
cout << "-----------------" << endl;
cout << " | | " << endl;
cout << " " << board_pos[2][0] << " | " << board_pos[2][1] << " | " << board_pos[2][2] << " " << endl;
cout << " | | " << endl;
}
编辑:多亏了你们的帮助我弄明白了,我真的很感激。 :)
我只想 return 您用来固定电路板的类型。在您的情况下,您从 char[3][3]
.
我会使用 C++11 编写 array
:
using Row = std::array<char, 3>;
using Board = std::array<Row, 3>;
现在可以制作各种功能了:
void move(char player, Board const& b, int row, int col);
bool is_game_over(Board const&);
void print(Board const& b);
等等
您的打印函数可以是:
void print(Board const& b)
{
std::cout << " | | \n";
auto print_row = [](Row const& row) {
std::cout << " " << row[0] << " | " << row[1] << " | " << row[2]
<< " \n";
};
print_row(b[0]);
std::cout << " | | \n";
std::cout << "-----------------\n";
std::cout << " | | \n";
print_row(b[1]);
std::cout << " | | \n";
std::cout << "-----------------\n";
std::cout << " | | \n";
print_row(b[2]);
std::cout << " | | \n";
}
看到了Live
版画
| |
1 | 2 | 3
| |
-----------------
| |
4 | 5 | 6
| |
-----------------
| |
7 | 8 | 9
| |