jjzjj

stringstream

全部标签

c++ - std::stringstream 类需要有 dll 接口(interface)

我在dll中有一个C++类。在那个类中,我想将来自Curl回调的数据存储到一个成员变量中。我打算像这样使用字符串流:voidMyClass::CurlCallback(void*pvData,size_ttSize){constchar*data=static_cast(pvData);m_myStringStream但是当像这样在我的类中声明字符串流时:private:std::stringstreamm_myStringStream;我收到以下错误:Error1errorC2220:warningtreatedaserror-no'object'filegeneratedWarni

c++ - 使用 stringstream::imbue 和自定义全局运算符 new 调试断言失败

对于这个相当本地化的问题,我深表歉意,但我希望得到其他人的看法,以确保我没有做明显错误的事情。我相信我在VisualC++运行时库或Microsoft的std::stringstream实现中的某处遇到了错误。该问题仅在以下情况下出现:imbue()被调用以更改stringstream上的语言环境,并且使用了一个自定义的全局operatornew,它返回一个指针偏移量,该指针与用于分配block的malloc()返回的基址相距。我已经能够使用以下最小测试用例重现此内容:#includestaticvoid*localMalloc(size_tbytes){unsignedchar*pt

c++ - 从整数值返回固定长度的 std::string

问题->将固定长度的字符串返回给std::string*。目标机器->Fedora11。我必须派生一个函数,它接受整数值并将固定长度的字符串返回到字符串指针;例如->int值在0到-127范围内所以对于int值0->它应该显示000对于值-9->它应该返回-009对于值来说-50->它应该返回-050对于值来说-110->它应该返回-110所以简而言之,所有情况下的长度都应该相同。我做了什么:我已经根据如下所示的要求定义了函数。我需要帮助的地方:我派生了一个函数,但我不确定这是否是正确的方法。当我在Windows端的独立系统上测试它时,exe有时会停止工作,但是当我将此功能包含在Lin

c++ - 通过函数传递字符串流值,C++

我目前有一个日志系统,它接受一个char*和varargs,然后使用它们来执行printf。这适用于C风格的字符串,但我想要一些更简洁的东西。目前,如果我使用std::stringstream,我必须在日志系统之外创建stringstream,然后将char*用于stringstream给出的字符串。它看起来像这样:std::stringstreamstrStream;strStream我想要的是将参数传递给函数,就好像我直接将它们与字符串流一起使用一样。从用户的角度来看,这看起来像这样:logging::printStream("Thevalueofxis:"或者可能是这样的:log

c++ - 如何在不写入任何内容的情况下获得 stringstream 的实际最大大小?

我正在用下面的程序处理大的libpacp文件。我对stringstream可以从操作系统分配的实际最大内存大小感到困惑。代码的第一部分是处理libpacp文件的程序。第二部分是测试程序。环境:Windows10,VS,符合Win32-Released(32位)模式。第一部分:#include#include#include#include#include#include#defineHeaderBytes24#defineMaxPkgBytes65544//65536+8#defineKeepDays7#defineKeepSeconds(KeepDays*86400)#defineS

c++ - istream 没有完全恢复已放入 stringstream 的内容

我使用以下设置:#includeusingnamespacestd;classfoo{public:voidbar(istream&in,intn){vector>q;intx,y,a,b;for(q.clear();in>>x>>y>>a>>b;q.push_back(make_tuple(x,y,a,b)));assert(n==q.size());}};intmain(){stringstreamss;for(inti=0;ibar(ss,100);}事实上,我的代码比这更复杂,但我的想法是将东西(准确地说是longlongint)放入stringstream并调用一个函数,将创

c++ - 使用 stringstream 精度格式化 float 但丢弃零填充

我正在尝试将float和长double的精度(即小数位数)设置为10,但我不希望它们用零填充。即,123456.789123456789应该给出123456.7891234568,但是123456不应该给出123456.0000000000,而是123456到目前为止,我已经将范围缩小到:longdoublemyNumber;stringmyString;ostringstreammyStream;myStream.setf(ios::fixed,ios::floatfield);myStream.precision(10);myStream我也试过摆弄setfill('')和std:

c++ - StringStream 循环失败

我正在阅读具有这种格式的文本文件:grrr,sometext,45.4321,54.22134我只是将我的double值存储在一个字符串变量中。为什么它只给我字符串的第一个数字?如果我只使用一个while循环和这种新格式的文本文件重新开始:21.34564它正常工作。问题是,sLine与我重新开始时的值相同。不同之处在于最有可能导致问题的三个嵌套for循环。这是让我得到我想要的东西的代码:#include#include#include#include#include#include#includeusingnamespacestd;intmain(){stringusrFileStr

c++ - 如何阻止读取 C++ stringstream 以等待数据

所以,我一直在努力弄清楚,如何等待来自C++stringstream的数据(例如),而不是不断地检查数据是否存在,这非常消耗CPU。例如,我完全能够从串行设备读取数据,并在没有数据到达时锁定进程,但不幸的是,我还不知道如何使用C++流来做到这一点。我确定我遗漏了什么,因为cin正是这样做的,即等待返回键从istream读取中退出,但它是如何做到的?在此先感谢您对这个主题的任何了解。 最佳答案 Streams从std::streambuf获取数据。对于std::cin,它调用系统的read()函数(或等效函数),该函数会阻塞,直到数据

c++ getline和stringstream

我正在尝试读取一个文件,该文件有5行,每行有3-4个字符串长。这是我的输入文件:10:30Hurley1234567A10:1510:45Hurley1234567A11:3008:35Jacob1x1x1x1x1x08:35Jacob1x1x1x1x1x08:1008:05Jacob1x1x1x1x1x08:45Sayid3333222209:15这就是我得到的:10:30Hurley1234567A10:1510:45Hurley1234567A11:3008:35Jacob1x1x1x1x1x11:3008:35Jacob1x1x1x1x1x08:1008:05Jacob1x1x