草庐IT

basic_stringstream

全部标签

c++ - stringstream 重复最后一个词

我正在尝试使用stringstream拆分字符串:#include#include#include#includeusingnamespacestd;intmain(){ifstreamfp;stringname;fp.open("in.txt");while(fp){stringline;getline(fp,line);cout>name;cout这是in.txt:catbatratsat这是我得到的输出:catbatratsatcatbatratsatsat从getline()函数中检索到的行是正确的,但在拆分过程中我得到了最后一个字两次。我不确定为什么会这样。

c++ - 使用 stringstream float 的字符串

我在网上找到这段代码,作为将字符串转换为float/int/double的模板。它只是在这里,所以我有一些可以引用的问题....我想让用户输入一个数字作为字符串,将其转换为float,测试它是否成功,如果输入是“Q”则退出,或者如果输入不是“Q”则打印“无效输入”uit字符并返回以获取更多输入。转换失败测试的语法是什么?会是ss.fail()吗?//usingstringstreamconstructors.#include#includeusingnamespacestd;intmain(){intval;stringstreamss(stringstream::in|strings

c++ - 使用 stringstream 打印四舍五入的 float

我有浮点变量“lmin”和“lmax”。我希望只显示4位有效数字。我目前正在使用我在网上找到的表格...stringtextout;stringstreamss;ss其中“输出”只是我编写的一个函数,用于解析字符串并将其打印到屏幕上。重要的一点是,我如何只将lmin和lmax的ROUNDED版本打印到ss? 最佳答案 使用std::setprecision指定小数点后的位数。#include#include#includeintmain(){doubled=12.3456789;std::stringstreamss;ss输出:12

c++ - make 失败,返回错误 "cannot convert ‘std::istream {aka std::basic_istream<char>}’ 到 ‘bool’”

我正在尝试从源代码编译libgtextutils(fastxtoolkit需要)。“./configure”命令运行良好,但随后的“make”命令产生了一个我无法解决的错误。text_line_reader.cpp:Inmemberfunction‘boolTextLineReader::next_line()’:text_line_reader.cpp:47:9:error:cannotconvert‘std::istream{akastd::basic_istream}’to‘bool’inreturnreturninput_stream;^~~~~~~~~~~~make[3]:*

c++ - 如何强制 std::stringstream operator >> 读取整个字符串?

如何强制std::stringstreamoperator>>读取整个字符串而不是在第一个空格处停止?我有一个模板类,用于存储从文本文件中读取的值:templateclassValueContainer{protected:Tm_value;public:/*...*/virtualvoidfromString(std::string&str){std::stringstreamss;ss>m_value;}/*...*/};我试过设置/取消设置流标志,但没有帮助。澄清该类是一个容器模板,可以自动转换为类型T或从类型T自动转换。字符串只是模板的一个实例,它还必须支持其他类型。这就是为什

c++ - 是否可以使用 std::basic_string 作为 char* 的包装器?

我有第三方库返回由strdup(和分别是wcsdup函数)在其中创建的char*(和wchar_t*)。我想避免在代码末尾手动调用free。是否可以为std::basic_string编写一个分配器,以便它可以处理这个库返回的c字符串?理想情况下,我根本不想分配任何新内存并使用返回的内存块(字符串应该是常量)。 最佳答案 遗憾的是,std::string有自己的内存管理,不能重用分配的字符串。您可以将它们复制到std::string并立即删除它们,但这将调用您试图避免的所有行为。您可以做的是立即声明一个带有自定义删除器的unique

c++ - Boost 单元测试框架 dll 导出的 std::basic_ostringstream 导致 "already defined symbol"-error

我使用VisualStudio2012。我的设置是这样的:some.lib链接到some.exesome.lib链接到some_test.exe我在构建some_test.exe时使用BOOST_TEST_DYN_LINK。对于some.lib和test.exe使用BOOST_ALL_DYN_LINK结果是一样的。我已经使用/MD(多线程DLL)构建了some_test.exe、some.exe和some.lib。我已经使用runtime-link=shared构建了boost库。所有这些都是由VC11(VisualStudio2012)构建和链接的。问题是,在some.lib中,我想

c++ - `std::basic_string::operator[]` 能否返回一个 "distant"保护页 nul 终止符?

所以,operator[]没有直接说s[s.size()]必须是s[s.size()-1]之后的字符在内存中。它的措辞似乎是为了避免做出这种说法。但是s.data()指出s.data()+k==&s[k],和s.data()必须返回一个指针。忽略使用&的看似标准的缺陷在CharT以上而不是std::addressof,是否可以自由返回不同的CharT(比如,一个在protected页面上,或在ROM中)对于s[s.size()]在第一次调用s.data()之前?(很明显,它可以将缓冲区安排在一个只读页面上,上面有一个零;我说的是另一种情况)明确地说:据我所知,如果s.data()永远不

c++ - 如何像 std::string 一样为自定义 std::basic_string<> 特化类定义哈希类?

我的专业是std::basic_string,比如说,string_t,它与std::string相同相同除了第三个模板参数是我的自定义分配器。std::basic_string问题:我应该如何使用C++标准库中已经提供的散列仿函数为这个特化定义一个散列仿函数类?我知道如何定义哈希仿函数,但我不知道如何利用现有的std::hashstd中的仿函数定义我的自定义一个。我对自己编写哈希操作犹豫不决,因为我知道这是在重新发明轮子,而且不太可能比std::hash更好。,因为string_t之间的唯一区别和std::string只是分配器。cppreference有一些例子,但它们对我帮助不大

java - 从 basic_string 到 jstring 的转换

我正在使用basic_string类型并需要将其转换为jstring以通过JNI层。我想知道最好的方法是什么。我有一个函数可以给我std::string来self的basic_string类型,所以对此的回答也很酷。干杯。 最佳答案 您需要将std::basic_string转换为UTF-8。查看您的wstring->string转换的作用。Sun有一个JNI教程,展示了如何将char*转换为jstring(使用一些UTF转换例程)。您可以使用wstring->string,然后将string.c_str()传递给NewString