12

char を int で乗算することは可能ですか?

たとえば、数値が発生するたびに * を使用してグラフを作成しようとしています。

のようなものですが、これは機能しません

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

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

6 に答える 6

33

私はその操作を「乗算」とは呼びません。それは混乱を招くだけです。連結はより良い言葉です。

いずれにせよ、 という名前の C++ 標準文字列クラスにstd::stringは、最適なコンストラクターがあります。

string ( size_t n, char c );

コンテンツは、文字c,n回の繰り返しによって形成される文字列として初期化されます。

したがって、次のように移動できます。

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

関連するヘッダー<string>.

于 2010-04-08T01:21:48.837 に答える
8

この問題に対する 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;
}
于 2010-04-08T02:09:41.060 に答える
8

あなたがやっている方法は、数値'*'7に対して文字のバイナリ表現の数値乗算を行い、結果の数値を出力します。

(C++ コードのコメントに基づいて) やりたいことは次のとおりです。

char star = '*';
int num = 7;
for(int i=0; i<num; i++)
{
    cout << star;
}// outputs 7 stars. 
于 2010-04-08T01:17:30.377 に答える
2

あなたはこれを行うことができます:

std::cout << std::string(7, '*');
于 2010-04-08T01:22:54.870 に答える
-1

ステートメントは次のようになります。

char star = "*";

(star * num) は、'*' の ASCII 値を num に格納されている値で乗算します

「*」を n 回出力するには、他の人が注ぎ込んだアイデアに従ってください。

お役に立てれば。

于 2010-04-08T15:14:51.333 に答える