- ベストアンサー
NTL 文字列に変換
現在VC++ 2010で円周率を計算するプログラムを作っています(Windowsフォームアプリケーション)。それで、NTLというライブラリのRR型を使って計算をしています。しかし、算出された値をテキストファイルに出力したいのですが、文字列への変換ができません。どうか教えてくださらないでしょうか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 調べてはみたんですが、英語表記のページしかなく、読めないうえに翻訳してもさっぱりわかりませんでした。 ぃゃぃゃ、NTLのマニュアルには書いてなくて当然です。調べる先が違います。 ostream に << できるってことは、ofstreamやostringstreamに << できるんだから、 1. ファイルに書く: #include <fstream> using namespace std; ... RR a; ofstream stream("output.txt"); stream << a; // これでおしまい 2. 文字列に変換 #include <sstream> #include <string> using namespace std; ... RR a; ostringstream stream; stream << a; string result = stream.str(); // これでおしまい const char* c_result = stream.str().c_str(); // またはこう。
その他の回答 (4)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
あっさりできちゃったですケド。 (URL参照)
お礼
ありがとうございました。ついにできました!サンプルコードもありがとうございます。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
>> C++/CLI(managed-modue)が混じってますよきっと。 > というのは、NTLのライブラリ、それともプログラムのほうでしょうか。 どっちでもない。プロジェクトの設定。 > そして、ぐたいてきになにをすればよいのでしょうか。 あなたのコード/プロジェクトが見えないのでなんとも答えようがありません。 # 強いて言うなら「Visual Studio のお勉強」。
お礼
ありがとうございました。
補足
#pragma once #include <math.h> #include <NTL/RR.h> #include <fstream> #include <string> #include <sstream> #if defined(DEBUG) || defined(_DEBUG) #pragma comment(lib,"ntl_d.lib") // デバッグモードのスタティックライブラリを読み込む #else #pragma comment(lib,"ntl_r.lib") // リリースモードのスタティックライブラリを読み込む #endif namespace 円周率π { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace NTL; using namespace std; /// <summary> /// Form1 の概要 /// </summary> <中略> #pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { //初期値の設定 RR a; a = 1; RR b; b = 0.5; b = sqrt(b); RR t; t = 0.25; RR p; p = 1; RR x; RR tesuto = b; RR pi; RR::SetPrecision(100); //円周率計算 //反復式 for (int i =0; i < 10;i++){ x = (a+b)/2; t = t-p*((a-x)*(a-x)); b = sqrt(a*b); a = x; p = 2*p; } //πの算出 pi = ((a+b)*(a+b))/(4*t); ostringstream stream; stream << a; string result = stream.str(); } }; } ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Windows Vista Home Premium Visual C++ 2010 Express Windowsフォームアプリケーション 追加した項目 ntl_d.lib,ntl_r.lib NTLのインストール・導入 NTL(タ倍長ライブラリ)について http://tetekei.web.fc2.com/HTML/TecMemoDoc/NTL_about.html ------------------------------------------------------- ># 強いて言うなら「Visual Studio のお勉強」。 そうですね。初心者なので。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> リンカ ツール エラー LNK1313」というのが出てきて文字列変換以前の問題が新たに発覚しました。 C++/CLI(managed-modue)が混じってますよきっと。
お礼
ありがとうございました。
補足
何度もすみません。 >C++/CLI(managed-modue)が混じってますよきっと。 というのは、NTLのライブラリ、それともプログラムのほうでしょうか。そして、ぐたいてきになにをすればよいのでしょうか。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
NTL_SNS ostream& operator<<(NTL_SNS ostream& s, const RR& a); NTL_SNS istream& operator>>(NTL_SNS istream& s, RR& x); が定義されてるんで、どうにでもなるんじゃないかしら?
お礼
ありがとうございました。
補足
すいません。調べてはみたんですが、英語表記のページしかなく、読めないうえに翻訳してもさっぱりわかりませんでした。具体的な解説をお願いします。お手数ですが、よろしくお願いします。
お礼
ありがとうございました。ビルドしてみたら、「リンカ ツール エラー LNK1313」というのが出てきて文字列変換以前の問題が新たに発覚しました。前に、NTLのRR型を使用したプログラムにはこんなエラーは出てこなかったんですがね。でも、今後の参考にさせていただきます。