草庐IT

basic_stringstream

全部标签

c++ - stringstream->rdbuf()->pubsetbuf 没有设置缓冲区

我正在尝试使用pubsetbuf方法修改stringstream对象的stringbuffer而不必复制字符串,但它不起作用。我正在关注http://www.cplusplus.com/reference/iostream/streambuf/pubsetbuf/中的文档.这是我的示例代码:#include#includeintmain(intargc,char*argv[]){std::stringstreamstream("Yousaygoodbye");charreplace[]={"AndIsayhello"};std::coutpubsetbuf(replace,16);//

c++ - basic_string 文字在编译时速度更快还是处理得更好?

在浏览C++14/C++1y(n3690)草案时,我注意到在第21.7节中引入了basic_string文字后缀:inlinenamespaceliterals{inlinenamespacestring_literals{//21.7,suffixforbasic_stringliterals:stringoperator""s(constchar*str,size_tlen);u16stringoperator""s(constchar16_t*str,size_tlen);u32stringoperator""s(constchar32_t*str,size_tlen);wstr

c++ - 在 ostream 函数中使用 stringstream

我正在考虑为某些数学类(矩阵、vector等)提供ostream运算符。一位friend注意到ostream的gcc标准库实现std::complex的运算符包括在内部使用字符串流来格式化输出,然后再将其传递给实际的ostream:///Insertionoperatorforcomplexvalues.templatebasic_ostream&operator&__os,constcomplex&__x){basic_ostringstream__s;__s.flags(__os.flags());__s.imbue(__os.getloc());__s.precision(__o

c++ - 我可以使用 stringstream 判断 std::string 是否代表数字吗?

显然这应该用于显示字符串是否为数字,例如“12.5”==yes,“abc”==no。但是我对输入毫无顾忌。std::stringstreamss("2");doubled;ss>>d;if(ss.good()){std::cout 最佳答案 不要使用good()!测试流是否为failedornot:if(ss)Good告诉您是否设置了eofbit、badbit或failbit中的任何一个,而fail()告诉您有关badbit和failbit的信息。您几乎从不关心eofbit除非您已经知道流失败,因此您几乎不想使用good。请注意,直

c# - 如何调用接受来自 C# 的 stringstream 类型参数的 C++ DLL 函数?

我想导入一个非托管C++DLL并调用一个将stringstream作为参数的函数。在C#中,没有stringstream类,所以谁能告诉我如何从C#程序中调用这样的函数? 最佳答案 句号,您不应该通过DLL公开模板化对象。模板化对象(例如std::中的几乎所有内容)都被内联。所以通过这种方式,您的DLL获得了它自己的私有(private)实现拷贝。调用您的DLL的模块还将获得其自己的stringstream私有(private)实现。在它们之间传递意味着您无意中将两个不相关的实现编织在一起。对于许多项目,如果您使用完全相同的buil

c++ - 带空字符的 STL basic_string 长度

为什么您可以在std::basic_string中插入一个'\0'字符并且.length()方法不受影响,但是如果您调用char_traits::length(str.c_str())你得到字符串的长度直到第一个'\0'字符?例如stringstr("abcdefgh");cout::length(str.c_str());//4 最佳答案 好问题!原因是C风格的字符串被定义为以空字节结尾的字节序列。当您使用.c_str()从C++中获取C风格的字符串std::string,然后您将返回C++字符串存储的序列,其后有一个空字节。当您

c++ - 错误 C2248 : 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'

收到此错误,我很确定它在operatorvoidCRational::print()const{print(cout);}voidCRational::print(ostream&sout)const{if(m_denominator==1)cout 最佳答案 您需要通过引用而不是值返回ostream。它试图调用构造函数。也可以传递'a'作为引用:ostream&operator我还注意到打印方法可能是错误的。它有sout作为流的名称传递,但随后直接使用cout实现。应该是voidCRational::print(ostream&s

c++ - 如何将 stringstream 内容放入 char 而不是 string 类型?

大家都知道stringstream.str()需要一个字符串变量类型来存储stringstream.str()的内容。我想将stringstream.str()的内容存储到char变量或char数组或指针中。这有可能吗?请用你的答案写一个简单的例子。 最佳答案 为什么不只是std::strings=stringstream.str();constchar*p=s.c_str();?编辑:请注意,您不能随意提供p在你的函数之外:它的生命周期被绑定(bind)到s的生命周期,所以您可能想要复制它。编辑2:正如@David所暗示的,上面的

c++ - Stringstream 提取整数

为什么我无法将整数值提取到Num变量中?#include#include#includeusingnamespacestd;intmain(){stringDigits("123");stringstreamss(Digits);stringTemp;vectorTokens;while(ss>>Temp)Tokens.push_back(Temp);ss.str(Tokens[0]);intNum=0;ss>>Num;cout 最佳答案 当流提取3个数字“123”中的最后一个时,将设置eof状态。这个不是str()成员清除的,需要

c++ - 如何将 std::basic_string 类型转换为 char 类型的数组?

运行此代码时出现以下错误:syslog(LOG_ERR|LOG_USER,"%s",errorString);cannotconvert‘conststring{akaconststd::basic_string}’to‘constchar*’for>argument‘2’to‘voidsyslog(int,constchar*,...)’inServer.cpp/PeCounterline478C/C++Problem我正在守护程序,当使用cout输出到stdio时,errorString值打印得很好,但在使用syslog调用时不会打印。将std::basic_string(char