1

stringstream を介して double を文字列にしようとしていますが、機能していません。

std::string MatlabPlotter::getTimeVector( unsigned int xvector_size, double ts ){
    std::string tv;
    ostringstream ss;
    ss << "0:" << ts << ":" << xvector_size;
    std::cout << ss.str() << std::endl;
    return ss.str();
}

私のコンソールでは「0:」しか出力されません...

私は2つのプロジェクトに取り組んでいますが、どちらも同じ問題を抱えています。同じ問題が発生する別のものを投稿しています。ここに投稿されています:
http://pastebin.com/m2dd76a63
私は 3 つのクラス PolyClass.h と .cpp、およびメインを持っています。問題のある関数は PrintPoly です。誰かが私を助けることができますか?本当にありがとう!!

4

5 に答える 5

4

正しく印刷していますが、印刷順序のロジックが正しくありません。私はそれをあなたが望むように動作するように変更しました。これが役立つかどうか教えてください。 http://pastebin.com/d3e6e8263

古い答え:

名前空間にありますostringstreamが、コードは機能します。std問題はファイルの印刷コードにあります。

関数への呼び出しを確認できますか?

私はテストケースを作成しました:

// #include necessary headers
int main(void)
{
  std::string s;
  s = MatlabPlotter::getTimeVector(1,1.0);
}

私が得る出力は0:1:1

于 2009-10-19T21:07:22.507 に答える
2

次のコードは 100% 正しいです。

#include <iostream>
#include <sstream>
#include <string>

// removed MatlabPlotter namespace, should have no effect
std::string getTimeVector(unsigned int xvector_size, double ts)
{
    // std::string tv; // not needed
    std::ostringstream ss;
    ss << "0:" << ts << ":" << xvector_size;

    std::cout << ss.str() << std::endl;

    return ss.str();
}

int main(void)
{
    // all work
    // 1:
    getTimeVector(0, 3.1415);

    // 2: (note, prints twice, once in the function, once outside)
    std::cout << getTimeVector(0, 3.1415) << std::endl;

    // 3: (note, prints twice, once in the function, once outside)
    std::string r = getTimeVector(0, 3.1415);
    std::cout << r << std::endl;
}

相違点を見つけてください。それがエラーの原因である可能性があります。double で停止するため、印刷しようとしている double は無限大、NaN (数値ではない)、またはその他のエラー状態であると推測しています。

于 2009-10-19T22:31:26.110 に答える
1

これを出力しようとするコードを表示しなかったため、これの「出力なし」の部分については実際には役に立ちません。推測として、どういうわけかそこにEOLを入れなかったのでしょうか。一部のシステムは、改行に達するまでテキスト出力を提供しません。<< std::endlこれを行うには、をラインまたは'\n'ストリングにタックします。

使用法を書き留めていないので、タイプを使用する必要がありますstd::ostringstream。これは、「string」だけでなく「std:string」を使用する方法と似ています。

また、私だったら、その一時変数をreturn ss.str();削除します。コードが少なくなり(間違いを犯す可能性があります)、プログラムの作業が少なくなる可能性があります。

于 2009-10-19T21:09:07.017 に答える
0

ご意見ありがとうございます!正確なエラーはわかりませんが、それを台無しにしているのはXCodeの設定である必要があります。CMakeLists.txtファイルを作成し
cmake -G XCode .. 、XCodeプロジェクトを使用してターミナルからコンパイルし、作成しました。私はそれを実行しました、そして今それはうまくいきます...今誰かがXCodeにこれをさせるかもしれないものを知っているでしょうか?次のバージョン3.2を実行しています
。64ビット
コンポーネントバージョン
XcodeIDE:1610.0
Xcode Core:1608.0
ToolSupport:1591.0

于 2009-10-21T03:40:23.020 に答える
0

さて、リンク先のコードを試してみましたが、出力されます

 B 4
 A 5
 B 4
 C 3
x^ + 5x^ + 3

PrintPolyの後にクラッシュが発生しますが、クラッシュする前に私にとって。コードを見ると、これが印刷されると予想されるものです。文字の後に整数が表示されないということですか?

于 2009-10-20T20:59:08.520 に答える