代码之家  ›  专栏  ›  技术社区  ›  skr

C++-创建具有相同字符的特定大小的以null结尾的C样式字符串的更好方法

  •  0
  • skr  · 技术社区  · 8 年前

    我希望创建一个以null结尾的 c-style string 每个角色都是 -

    char output_str[n + 1];
    std::fill(output_str, output_str + n, '-');
    output_str[n + 1] = '\0';
    

    1) 有更聪明的吗 C++方式 这样做?

    2) 当我打印字符串的大小时,输出是 n n + 1 . 我做错什么了吗?或者空字符从来都不算在内?

    请考虑这段代码,而不是上面的代码:

    char output_str[n + 1];
    std::fill(output_str, output_str + n, '-');
    output_str[n] = '\0';
    

    请忽略关于尺寸的问题。

    2 回复  |  直到 8 年前
        1
  •  4
  •   user0042    8 年前

    有没有更聪明的C++方法可以做到这一点?

    当然,使用 std::string 为此:

    std::string s(n,'-');
    const char* cstyle = s.c_str();
    
        2
  •  0
  •   user0042    8 年前

    使用String类:

    std::string output_str(n,'-');
    

    如果您需要旧C样式的字符串

    output_str.c_str(); // Returns a const char*
    

    2) 当我打印字符串的大小时,输出是n,而不是n+1。我做错什么了吗?或者空字符从来都不算在内?