将 char 乘以整数 (c++)

Posted

技术标签:

【中文标题】将 char 乘以整数 (c++)【英文标题】:Multiply char by integer (c++) 【发布时间】:2010-04-08 01:14:37 【问题描述】:

char 可以乘 int 吗?

例如,我正在尝试制作一个图表,每次出现一个数字时都带有 *。

类似的东西,但这不起作用

char star = "*";
int num = 7;

cout << star * num //to output 7 stars

【问题讨论】:

@dubya,c++ 标签在这里比“帮助”有用得多。首先,我们可以假设您需要帮助,因为,好吧,您在这里提出问题 :-) 【参考方案1】:

我不会将该操作称为“乘法”,这只是令人困惑。串联是一个更好的词。

无论如何,名为std::string 的C++ 标准字符串类有一个非常适合您的构造函数。

string ( size_t n, char c );

内容被初始化为由字符cn重复形成的字符串。

所以你可以这样:

char star = '*';  
int num = 7;
std::cout << std::string(num, star) << std::endl;  

确保包含相关标头&lt;string&gt;

【讨论】:

+1 用于引用标准库。现在这样做的人太少了。 “串联”也是一个坏词。对此没有真正的说法,但我认为“迭代”更接近,因为这确实是你必须做的才能达到预期的结果。 我写的时候是'catenation'。 我的字典说“连接”的定义之一是“通过链接或连接添加以形成链或系列”。我觉得这是对这次行动的准确描述。 en.wiktionary.org/wiki/concatenate 和 merriam-webster.com/dictionary/concatenate【参考方案2】:

您这样做的方式是将'*' 字符的二进制表示与数字7 相乘并输出结果数字。

您想要做的(基于您的 c++ 代码注释)是这样的:

char star = '*';
int num = 7;
for(int i=0; i<num; i++)

    cout << star;
// outputs 7 stars. 

【讨论】:

【参考方案3】:

GMan 对这个问题的过度设计激发了我做一些模板元编程来进一步过度设计它。

#include <iostream>

template<int c, char ch>
class repeater 
  enum  Count = c, Char = ch ;
  friend std::ostream &operator << (std::ostream &os, const repeater &r) 
    return os << (char)repeater::Char << repeater<repeater::Count-1,repeater::Char>();
  
;

template<char ch>
class repeater<0, ch> 
  enum  Char = ch ;
friend std::ostream &operator << (std::ostream &os, const repeater &r) 
    return os;
  
;

main() 
    std::cout << "test" << std::endl;
    std::cout << "8 r = " << repeater<8,'r'>() << std::endl;

【讨论】:

啊,我回答的元编程对应部分。最优秀的。 +1(小心,你会因为“太聪明”而被投反对票) @GMan 所以使用内置的 std::string 构造函数比 for 循环可读性差,但这值得你 +1? @josh:如果您没有看到我的回答,以及一些用户在这个问题上表达的愚蠢(以及因此我对这种愚蠢的回答),那么这是没有意义的。跨度> 【参考方案4】:

你可以这样做:

std::cout << std::string(7, '*');

【讨论】:

【参考方案5】:

声明应该是:

char star = "*";

(star * num) 将 '*' 的 ASCII 值与存储在 num 中的值相乘

要输出'*' n 次,按照别人灌输的想法。

希望这会有所帮助。

【讨论】:

【参考方案6】:
//include iostream and string libraries

using namespace std;

int main()


    for (int Count = 1; Count <= 10; Count++)
    
        cout << string(Count, '+') << endl;
    

    for (int Count = 10; Count >= 0; Count--)
    
        cout << string(Count, '+') << endl;
    


return 0;

【讨论】:

以上是关于将 char 乘以整数 (c++)的主要内容,如果未能解决你的问题,请参考以下文章

将整数复制到缓冲区 memcpy C++

如何使用 C++ 将字符串中的字符转换为整数变量

不能将序列乘以“浮点”类型的非整数

在 C++ 中使用二维向量乘以矩阵

模乘函数:将两个整数乘以一个模

将浮点数乘以 Python 中的函数并且无法将序列乘以“浮点”类型的非整数