sstream不工作......(仍然)

时间:2009-10-19 21:01:35

标签: c++ string double sstream

我试图通过stringstream获得一个双字符串,但它不起作用。

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:”...

我正在研究两个项目,都有同样的问题。我发布了另一个,遇到了同样的问题。它张贴在这里:
http://pastebin.com/m2dd76a63
我有三个类PolyClass.h和.cpp,主要。有问题的功能是PrintPoly。有人可以帮我吗?非常感谢!!

5 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;
}

找到我们的不同之处,这可能是您的错误来源。因为它停在你的双倍,我猜你试图打印的双倍是无穷大,NaN(不是数字),或其他一些错误状态。

答案 2 :(得分:1)

我无法真正帮助“无输出”部分,因为您没有显示尝试输出此代码的代码。作为一个猜测,你可能不会以某种方式在那里放一个EOL吗?有些系统在打到换行符之前不会提供任何文本输出。您可以通过在行上添加<< std::endl或在字符串中添加'\n'来完成此操作。

由于您没有放弃使用它,因此您需要使用std::ostringstream类型。这类似于你必须使用“std:string”而不仅仅是“string”。

另外,如果是我,我会摆脱那个临时变量而只是return ss.str();代码较少(可能出错),并且可能会减少程序的工作量。

答案 3 :(得分:0)

好吧,我尝试了你链接的代码并输出

 B 4
 A 5
 B 4
 C 3
x^ + 5x^ + 3
虽然崩溃发生在PrintPoly之后,但在崩溃之前对我来说是

。从查看代码,这是我期望它打印。你是说你在字母后面没有出现整数吗?

答案 4 :(得分:0)

感谢大家的投入!不确定确切的错误,但它必须是XCode中的一些设置,这搞乱了它。我制作了一个CMakeLists.txt文件并使用它从终端编译
cmake -G XCode .. 并制作了一个XCode项目。我运行它,现在它工作正常...现在有人会碰巧知道什么可能导致XCode这样做?我正在使用以下版本运行3.2版:
64位
组件版本
Xcode IDE:1610.0
Xcode Core:1608.0
工具支持:1591.0