char を int で乗算することは可能ですか?
たとえば、数値が発生するたびに * を使用してグラフを作成しようとしています。
のようなものですが、これは機能しません
char star = "*";
int num = 7;
cout << star * num //to output 7 stars
char を int で乗算することは可能ですか?
たとえば、数値が発生するたびに * を使用してグラフを作成しようとしています。
のようなものですが、これは機能しません
char star = "*";
int num = 7;
cout << star * num //to output 7 stars
私はその操作を「乗算」とは呼びません。それは混乱を招くだけです。連結はより良い言葉です。
いずれにせよ、 という名前の 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>
.
この問題に対する 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;
}
あなたがやっている方法は、数値'*'
7に対して文字のバイナリ表現の数値乗算を行い、結果の数値を出力します。
(C++ コードのコメントに基づいて) やりたいことは次のとおりです。
char star = '*';
int num = 7;
for(int i=0; i<num; i++)
{
cout << star;
}// outputs 7 stars.
あなたはこれを行うことができます:
std::cout << std::string(7, '*');
ステートメントは次のようになります。
char star = "*";
(star * num) は、'*' の ASCII 値を num に格納されている値で乗算します
「*」を n 回出力するには、他の人が注ぎ込んだアイデアに従ってください。
お役に立てれば。