私は勉強しようとしている初心者です。私は文字列ストリームを "print()"というクラスメンバ関数に送りたいが、エラーが出る。これがうまくいくと、私はそれらをフィードするデータで動作するより多くのクラスメンバ関数を記述することができます。クラスメンバ関数に文字列を渡す
今のところ私はメンバ関数 'print'を持つクラスを作成しました。 "month1.print();"
Month month1 = { "January" };
Month month2 = { "February" };
Month month3 = { "March" };
etc.
私が呼ぶ:
class Month
{
public:
string m_month;
void print()
{
cout << m_month << endl;
}
};
次は、私が12ヶ月を初期化それは正しい1月を印刷します。
私はstringstreamとforループを使用して月+ 1〜12を連結し、string関数をprint関数に送りたいとします。
stringstream os;
string mValue = "month";
int iValue = 1;
for(int i = 0; i < 12; ++i)
{
os << mValue << "" << iValue << "\n";
iValue += 1;
}
ただし、文字列を印刷機能と組み合わせることはできません。中
os.print(); and os.str().print();
結果:
charににstringstreamを変換し、それを供給する "エラー 'のstd ::にstringstream {別名クラスのstd :: __ cxx11 :: basic_stringstream}' は何という名前のメンバー '印刷' を持っていません"で印刷機能の結果への「エラー: 『constのchar型*』非クラス型であるメンバーのCSTR '内の 『印刷』、要求」:私が何をしようとしています何
const string tmp = os.str();
const char* cstr = tmp.c_str();
cstr.print();
かいつまん月+ 1〜12を連結し、それをクラスメンバ関数 "print"に送ります。これは簡単なことですが、私はそれを動作させることはできません。助言がありますか?
編集:フルコード:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
class Month
{
public:
string m_month;
void print()
{
cout << m_month << endl;
}
};
int main()
{
Month month1 = { "January" };
Month month2 = { "February" };
Month month3 = { "March" };
Month month4 = { "April" };
Month month5 = { "May" };
Month month6 = { "June" };
Month month7 = { "July" };
Month month8 = { "August" };
Month month9 = { "September" };
Month month10 = { "October" };
Month month11 = { "November" };
Month month12 = { "December" };
stringstream os; // Initialize stringstream "os"
string mValue = "month"; // Initialize mValue "month"
int iValue = 1; // Initialize iValue "1"
for(int i = 0; i < 12; ++i)
{
os << mValue << "" << iValue << "\n"; // Glue mValue and iValue
// together
iValue += 1; // Increment iValue by one
}
send stringstream "os" to the print function // mock code: Here I want to send month1.print(); month2.print(); etc. to the print function. The output should be January, February etc.
return 0;
}
あなたは 'os.print();'で何をしようとしているのか分かりません。エラーは次のように、printはstringstreamのメソッドではありません。 stringstream文字列を 'm_month'に代入しようとしましたか?また、あなたは月変数を決して使用していません。私はiValueのあなたのループが何をすべきかわからない。どうか明らかにしてください。 – Carcigenicate
待って、mValue for-loopで月オブジェクトを取得しようとしていますか? – Carcigenicate
私はおそらくここで正しい用語を使用していないでしょうが、私はメンバー 'm_month'と 'print'でクラスを作成しています。私は1月12日を初期化しているので、 'month1.print();'それは 'January'を印刷します。 'month2.print();' 2月を印刷します。今のところ、プログラムは 'January、2月、3月など'を印刷し、 'month1.print(); 〜にmonth12.print();それがforループの目的です。それはインクリメントし、 'month1 to 12'を連結して印刷機能に送ります。私は元の投稿に完全なコードを掲載します。 – TwoGoldFish