草庐IT

Stringstream

全部标签

c++ - 如何从 std::vector<string> 构造 std::string?

我想建立一个std::string来自std::vector.我可以使用std::stringsteam,但想象有一种更短的方法:std::stringstring_from_vector(conststd::vector&pieces){std::stringstreamss;for(std::vector::const_iteratoritr=pieces.begin();itr!=pieces.end();++itr){ss我还能怎么做? 最佳答案 C++03std::strings;for(std::vector::cons

c++ - 什么时候应该使用字符串而不是字符串流?

我什么时候应该使用stringstream而不是string::append()?假设我要连接字符串。stringstreamss;ss或者:stringstr;str.reserve(10000);str.append(str1);str.append("str2");...Write(str);哪个更快? 最佳答案 我不知道哪个会更快,但如果我不得不猜测我会说你的第二个例子是,特别是因为你调用了reserve成员函数来分配一个大扩展空间。如果您只是连接字符串,请使用string::append(或string::operator

c++ - 什么时候应该使用字符串而不是字符串流?

我什么时候应该使用stringstream而不是string::append()?假设我要连接字符串。stringstreamss;ss或者:stringstr;str.reserve(10000);str.append(str1);str.append("str2");...Write(str);哪个更快? 最佳答案 我不知道哪个会更快,但如果我不得不猜测我会说你的第二个例子是,特别是因为你调用了reserve成员函数来分配一个大扩展空间。如果您只是连接字符串,请使用string::append(或string::operator

c++ - 区别 stringstream 和 ostringstream

我正在尝试下面的代码段,但它没有提供所需的输出:#include#includeusingnamespacestd;voidMyPrint(ostream&stream){cout我知道stringstream和ostringstream之间唯一可能的区别是后者强制方向并且比stringstream快一点.我错过了什么吗?PS:之前发了一个类似的问题,但没有得到任何答案。 最佳答案 std::stringstream和std::ostringstream通过不同标记到std::stringbuf.特别是,std::stringbuf

c++ - 无法用新值覆盖 stringstream 变量

stringwhatTime(intseconds){stringh,m,s,ans;stringstreamss;ss>h;ss.str("");ss>m;ss.str("");ss>s;return(h+":"+m+":"+s);}上述程序的输出格式为“some_value::”我也尝试过ss.str(std::string())和ss.str().clear()但即使这样也行不通。有人可以建议任何解决此问题的方法吗? 最佳答案 你已经correctly使用ss.str("")清空字符串缓冲区,但您还需要使用ss.clear()

c++ - 使用 stringstream 输入/输出一个 bool 值

这似乎是一个愚蠢的问题,但我被难住了。这是我的代码:intmain(){stringline,command;getline(cin,line);stringstreamlineStream(line);boolactive;lineStream>>active;cout无论我为事件输入什么,它总是打印出0。所以假设我的输入是true它会输出0和同样的东西为false。 最佳答案 您应该始终验证您的输入是否成功:您会发现它不是。您想在当前设置下尝试值1:if(lineStream>>active){std::cout如果你想能够输入

C++ std::stringstream/ostringstream 和 UTF 字符

我正在编写一个程序来处理一些数据,将其输出到一个.csv文件,然后编写一个GNUplot脚本,然后调用GNUplot来执行该脚本并创建一个具有相同名称(只是扩展名不同)的图像文件.文件名包含UTF字符(我相信是UTF-8?),例如°、φ和θ。当我使用g++4.4.7在Linux中编译和执行它时,所有这些都工作得很好。然后我更改了我的代码以在MicrosoftVisualStudio2008中编译,当我运行该程序时问题就开始了。我使用以下两段代码制作一个标准的文件名字符串(我只是为各种文件添加扩展名)打开流以写入文件(GNUplot脚本和.csv文件之间的唯一区别是扩展名//Genera

c++ - atof 和 stringstream 产生不同的结果

我一直在研究将float转换为人类可读格式并返回的问题。即一个字符串。我在使用stringstream时遇到了问题,发现atof产生了“更好”的结果。注意,在这种情况下我没有打印出数据,我使用调试器检索值:constchar*val="73.31";std::stringstreamss;ss>floatVal;//VALUEIS73.3100052floatVal=atof(val);//VALUEIS73.3099976对此可能有一个合理的解释。如果有人能启发我,我将不胜感激:)。 最佳答案 答案基于OP使用MSVC的假设ato

c++ - stringstream >> 十六进制的 uint8_t? C++

我对以下代码的输出感到困惑:uint8_tx=0,y=0x4a;std::stringstreamss;std::stringa="4a";ss>x;std::cout上面的输出是:52744焦344a4当我们更改时,将第一行替换为:uint16_tx=0,y=0x4a;输出变成:747474744a4aJ我想我明白会发生什么,但我不明白为什么会发生或我如何防止它/解决它。根据我的理解,std::hex修饰符由于x的类型而以某种方式被破坏,在技术层面上可能不完全正确,但它只是简单地写入它读取的第一个字符.背景:输入应该是一串十六进制数字,每一对代表一个字节(就像位图,除了字符串)。我希

c++ - 在 VC++14 中使用 std::basic_stringstream<char16_t> 时出错

我正在尝试做一些基本的char16_t字符串(u16string)处理,但遇到了一些麻烦。这个小程序:#include#includeintmain(){intfoo=65;std::basic_stringstreamss;ss创建错误:ErrorC2491'std::numpunct::id':definitionofdllimportstaticdatamembernotallowed.xlocnum259我已经在一些在线编译器上试过了,但是那里没有错误。感谢我能得到的任何帮助! 最佳答案 好的,它看起来像是VC++标准库或V