草庐IT

Stringstream

全部标签

c++ - std::stringstream 和 std::ios::binary

我想写入std::stringstream而不进行任何转换,比如行尾。我有以下代码:voiddecrypt(std::istream&input,std::ostream&output){while(input.good()){charc=input.get()c^=mask;output.put(c);if(output.bad()){throwstd::runtime_error("Outputtostreamfailed.");}}}下面的代码就像一个魅力:std::ifstreaminput("foo.enc",std::ios::binary);std::ofstreamou

c++ - 字符串流 >> 运算符

我有这个代码:std::strings="\n\n\n\n+\n\n\n+";std::stringstreamserializedDataStream(s);std::stringplusCharacter,plusCharacter2;serializedDataStream>>plusCharacter;cout>plusCharacter2;cout这意味着stringsteam>>>运算符跳过了新行。我查看了std::stringstream文档,但我找不到关于为什么会发生这种情况的解释。这是编译器特定的行为,还是我可以依赖它? 最佳答案

C++:const char * 到 stringstream

是否可以将constchar*放入字符串流中?假设size是我的constchar*变量:stringstreams;s.write(temp,size);如何获取尺寸?谢谢。 最佳答案 我测试了它,它工作正常......#include#includeusingnamespacestd;intmain(){stringstreams;constchar*token="HELLO";s 关于C++:constchar*到stringstream,我们在StackOverflow上找到一个

c++ - 流内容与返回字符串 `str()` 的区别?

我正在使用asmallpieceofcode生成我在互联网上找到的PDF文件,并尝试(温和地)优化它,因为创建文件需要很长时间。分析后,我将其缩小为以下代码:std::ostringstreamtmp;tmp发现在一个紧密的循环中,out是一个ostringstream,它在写入文件之前基本上包含整个PDF内容。我发现tmp.str()是该循环中花费最多时间的行,并且在查找C++引用时看到str()会返回一个拷贝流的基础字符串。然后,我认为删除该拷贝并直接使用out会更快。所以我转储了tmp并直接做了:out但是现在,生成的PDF文件被认为是“损坏的”,无法用PDF阅读器打开,而以前的

c++ - 如何在不复制的情况下从字符串流中获取字符?

在不使用boost的情况下,从字符串流中提取一组字符的正确C++11方法是什么?如果可能的话,我想在不复制的情况下执行此操作,因为在关键数据循环中使用它。不过,似乎std::string不允许直接访问数据。例如,下面的代码从字符串流中执行子字符串复制:inlinestd::stringleft(std::stringstreamss,uint32_tcount){char*buffer=newchar[count];ss.get(buffer,count);std::stringstr(buffer);//Secondcopyperformedheredeletebuffer;retu

c++ - 如何在 C++ 中为浮点值显示多个前导零?

这个问题在这里已经有了答案:HowcanIpadanintwithleadingzeroswhenusingcout(7个答案)关闭7年前。在C++程序中,我想显示一列浮点值,以便符号、数字和小数点全部对齐。必要时,多个前导零应填充每个值的整数部分。例如:Acolumnoffloatingpointvalues:+000.0012-000.0123+000.1235-001.2346+012.3457-123.4568我有一个经过精心注释的测试程序来证明这个问题。但是,当我编辑这篇文章时,我在这里找到了我需要的答案:-Extraleadingzeroswhenprintingfloat

c++ - stringstream临时ostream返回问题

我正在创建一个包含以下部分的记录器://#defineLOG(x)//forreleasemode#defineLOG(x)log(x)log(conststring&str);log(constostream&str);有了想法去做:LOG("Test");LOG(string("Testing")+"123");stringstreams;LOG(s这一切都按预期工作,但当我这样做时:LOG(stringstream()它不起作用:voidlog(constostream&os){std::streambuf*buf=os.rdbuf();if(buf&&typeid(*buf)=

c++ - 如何将二进制数据从一个流复制到另一个流?

目前我有一个程序将二进制数据加载到字符串流中,然后将数据传递到fstream,如下所示:stringstreamss(stringstream::binary|stringstream::in|stringstream::out);ss.write(data,512);//Loadsdataintostream//Usesamemoryblocktopassthedatabetweenthestreamschar*memBlock=newchar[512];ss.read(memBlock,512);ofstreamfout("someFile.bin",ios::binary);fo

c++ - 如何检查 stringstream>>string 是否不会在字符串上放置任何内容?

例如,当解析一个文本文件时,有时这个文件有这样的东西:keywordastringherekeywordanotherstringkeywordkeywordagainastring请注意,第3行有一个空字符串(无或空格)。问题是当您执行stringstream>>laststring时,stringstream有一个空字符串(null或只有空格),它不会覆盖“laststring”,它什么都不做。无论如何要事先检查一下这种情况?我不想创建一个临时空字符串只是为了检查它在stringstream之后是否仍然是空的>>,看起来很蹩脚。 最佳答案

c++ - 从 cin 读取 getline 到字符串流 (C++)

所以我尝试从标准输入中读取这样的输入(使用cin):AdamEnglish85CharlieMath76EricaHistory82RichardScience90我的目标是最终将每个数据片段存储在我创建的数据结构中它自己的单元格中,所以基本上我想解析输入,以便每个数据片段都是独立的。由于每一行输入都是由用户一次输入一个,所以每次我都会得到一整行我需要解析的输入。目前我正在尝试这样的事情:stringstreamss;getline(cin,ss);stringname;stringcourse;stringgrade;ss>>name>>course>>grade;我遇到的错误是XC