2010-04-08 95 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; 

}