You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++是否存在与Python fstring、字符串格式化功能等效的实现?

C++ 等效Python字符串格式化方案及棋盘函数改造

对应Python的string formatting和f-string功能,C++有成熟的等效实现,同时可以直接改造你现有的棋盘函数为返回字符串的可复用版本:

通用兼容方案(支持所有C++版本)

使用<sstream>头文件的std::ostringstream完成字符串拼接,不需要依赖高版本标准库:

#include <string>
#include <sstream>

std::string get_board() {
    char board_pos[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
    std::ostringstream oss;
    
    oss << "     |     |     " << "\n";
    oss << "  " << board_pos[0][0] << "  |  " << board_pos[0][1] << "  |  " << board_pos[0][2] << "  " << "\n";
    oss << "     |     |     " << "\n";
    oss << "-----------------" << "\n";
    oss << "     |     |     " << "\n";
    oss << "  " << board_pos[1][0] << "  |  " << board_pos[1][1] << "  |  " << board_pos[1][2] << "  " << "\n";
    oss << "     |     |     " << "\n";
    oss << "-----------------" << "\n";
    oss << "     |     |     " << "\n";
    oss << "  " << board_pos[2][0] << "  |  " << board_pos[2][1] << "  |  " << board_pos[2][2] << "  " << "\n";
    oss << "     |     |     " << "\n";
    
    return oss.str();
}

上层调用时直接获取返回的std::string对象即可,可直接打印或做后续处理:

// 调用示例
std::string board_str = get_board();
std::cout << board_str;

C++20 高版本最优方案

C++20标准库新增了std::format,语法和Python格式化字符串几乎一致,代码更简洁:

#include <string>
#include <format>

std::string get_board() {
    char board_pos[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
    return std::format(R"(
     |     |     
  {}  |  {}  |  {}  
     |     |     
-----------------
     |     |     
  {}  |  {}  |  {}  
     |     |     
-----------------
     |     |     
  {}  |  {}  |  {}  
     |     |     
)", 
    board_pos[0][0], board_pos[0][1], board_pos[0][2],
    board_pos[1][0], board_pos[1][1], board_pos[1][2],
    board_pos[2][0], board_pos[2][1], board_pos[2][2]
    );
}

这里用到了C++11及以上支持的原生字符串字面量R"()",可以保留字符串内的换行和空格,不需要额外转义。

内容的提问来源于stack exchange,提问作者SentBySunlight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:06:03