我试图通过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。有人可以帮我吗?非常感谢!!
答案 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