2010-04-08 94 views
6

是否有可能乘以int的char?整数乘char(C++)

例如,我试图制作一个图表,每次发生数字时都带*。

因此,像,但这不起作用

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

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

@dubya,C++的标签是一个更为有用,这里比的 '帮助'。首先,我们可以假设你需要帮助,因为你在这里问一个问题:-) – paxdiablo 2010-04-08 01:37:47

回答

21

我不认为这是操作“乘法”,这只是混乱。连接是一个更好的词。

在任何情况下,名为std::string的C++标准字符串类都有一个非常适合您的构造函数。

string (size_t n, char c); 

内容被初始化为通过字符cn倍的重复而形成的字符串。

所以你可以是这样的:

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

确保包括相关的头,<string>

+3

+1用于引用std库。这些日子里,很少有人会这样做。 – Randolpho 2010-04-08 01:23:28

+3

“连接”也是一个坏词。这并不是一个单词,但是我认为“迭代”越来越近了,因为这是你为了达到预期结果所必须做的。 – SoapBox 2010-04-08 01:59:58

+1

我写这篇文章时就是'catenation'。 – janks 2010-04-08 02:14:06

6

的方式你这样做会做对7号和输出产生的数'*'字符的二进制表示的数字相乘。

你想要做的(根据你的C++代码注释)这是什么:

3

你可以这样做:

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

GMAN的这个问题的过度eningeering激发了我做一些模板元编程进一步过度工程吧。

#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; 
} 
+2

对我来说,一个元编程的对应部分回答。最优秀的。 +1(仔细一点,你会因为太“聪明”而得票) – GManNickG 2010-04-08 02:33:36

+0

@GMan所以使用内建的std :: string构造函数的可读性比for循环的可读性要差,但是这值得你使用+1吗? – joshperry 2010-10-30 01:18:38

+0

@josh:如果你没有看到我的回答,以及一些用户在这个问题上表达的愚蠢(因此我回答了这个愚蠢),这是没有意义的。 – GManNickG 2010-10-30 09:18:43

0

的说法应该是:

char star = "*"; 

(星* NUM)就会大量繁殖的 '*' 的ASCII值与存储在NUM

要输出 '*' n倍的值,按照别人的想法。

希望这会有所帮助。

0
//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; 

}