質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

3回答

1678閲覧

C++ 文字列を分割するテストプログラム 計算結果

jon521

総合スコア12

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2018/01/17 06:41

Visual StudioでBoostを使用し、"1+1" などの文字列を分割できるかどうかをテストするプログラムを作成しています。
テストすることはできたのですが、足し算の結果を出力させたいです。
どうしたらいいでしょうか?

C++

1namespace symbol { 2 enum { 3 plus = -1, 4 minus = -2, 5 }; 6} 7 8bool parse(const std::string& src, std::vector<int>& dest) { 9 try { 10 std::string buffer; 11 for (size_t i = 0; i < src.length(); ++i) { 12 if (src[i] == '+') { 13 int value = std::atoi(buffer.c_str()); 14 dest.push_back(value); 15 buffer.clear(); 16 dest.push_back(symbol::plus); 17 } 18 else buffer += src[i]; 19 } 20 21 if (!buffer.empty()) dest.push_back(std::atoi(buffer.c_str())); 22 return true; 23 } 24 catch (std::exception& /* err */) { return false; } 25} 26 27 28void test_plus() { 29 std::vector<int> result; 30 31 BOOST_REQUIRE(parse("1+1", result)); 32 BOOST_REQUIRE(result.size() == 3); 33 BOOST_CHECK(result[0] == 1); 34 BOOST_CHECK(result[1] == symbol::plus); 35 BOOST_CHECK(result[2] == 1); 36} 37 38int test_main(int argc, char* argv[]) { 39 test_plus(); 40 return 0; 41}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

colonq

2018/01/19 11:12

「分割できるかどうかをテストするプログラム」と「足し算の結果を出力」の関連がよくわかりません。 足し算しているならばそれは分割のテストではありません。 「足し算できるかどうかをテストするプログラム」なのか「分割のテストのついでに足し算の結果を出力するプログラム」なのかなんだかよくわかりません。
guest

回答3

0

結果を出力させたいというのが、ちょっとよくわからないのですが、単にstd::coutを使って出力するだけという感じではないのでしょうか?

Boost.Testの実行結果としてなにかを出力したいのであれば、epistemeさんの書いている通りBOOST_TEST_MESSAGEマクロを使うのがいいと思います。
ただし、質問者さんはBoost.Testのなかでもminimal testライブラリを使用しているようですね。minimal testライブラリではこのマクロはサポートされていません。

BOOST_TEST_MESSAGEマクロを使用するには、minimalでない、フルセットのBoost.Testを使用する必要があります。

また、フルセット版のBoost.Testには、BOOST_TESTマクロが用意されています。
これを使用すると、テストが失敗した場合にのみ、その結果を、値付きで出力してくれます。(ただし、マクロに渡す値がstd::basic_ostreamで出力できない型の場合にはコンパイルエラーになるので注意が必要です)

サンプルコード
https://wandbox.org/permlink/7QFxtiQdxsTZZTjC

投稿2018/01/17 10:28

編集2018/01/17 10:32
hotwatermorning

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

parse()で分解した後、演算させるルーチンを作成し、それにパースした内容を渡して処理させ、結果が想定しているものかどうかをチェクしたら良いのではないでしょうか?

投稿2018/01/17 08:08

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

BOOST_TEST_MESSAGEのことかしら?

投稿2018/01/17 07:00

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問