草庐IT

jobseeker_string

全部标签

c++ - 将 std::string 解释为 char_type 的 std::vector?

我有一个template接受constvector&的函数.在所述函数中,我有vectorcbegin(),cend(),size(),和operator[].据我了解,string和vector使用连续空间,所以我想知道我是否可以以一种优雅的方式为两种数据类型重用该函数。可以std::string被重新解释为std::vector的(适当的)char_type?如果可以,限制是什么? 最佳答案 如果你只为constT&类型制作你的模板,并使用begin()、end()等,这两个函数vector和string共享,那么您的代码将适用

c++ - double 到 string 到 double 的转换抛出异常

以下代码在VisualStudio2013中引发了std::out_of_range异常,我认为它不应该:#include#includeintmain(intargc,char**argv){doublemaxDbl=std::stod(std::to_string(std::numeric_limits::max()));return0;}我也用gcc4.9.2测试了代码,它没有抛出异常。该问题似乎是由转换为字符串后不准确的字符串表示引起的。在VisualStudio中std::to_string(std::numeric_limits::max())产量1797693134862

c++ - 包含 Map(具有对象值)和 Multimap(具有 std::string 值)的对象的 boost 序列化:需要什么?

请参阅下面的main()和两个非常简单的类。然后根据Boost序列化(以及显示的内容)我的问题是:1)B类是否需要定义正常的重载流插入运算符“>”?目前在我的真实代码中没有这些。2)store()和load()方法中的类A是否需要显式地遍历map和multimap容器,显式地存储/加载它们的键:值对?例如像这样的东西:voidA::store(constchar*filename){std::ofstreamofs(filename);boost::archive::text_oarchiveoa(ofs);std::map::iteratorit;BMap.size();oafirs

c++ - 在限制之间搜索 std::string

如果您知道从哪里开始和结束搜索的字符串中的开始和结束位置。例如-strings=StringStringString|S|t|r|i|n|g|S|t|r|i|n|g|S|t|r|i|n|g01234567891011121314151617如何在字符串中找到“tr”,指定开始搜索的位置在索引6处,结束搜索的位置在索引9处。我正在尝试设置一个搜索限制,这样它就不会超出它。 最佳答案 如果你真的想限制被遍历的序列的长度(大概是因为字符串比感兴趣的区域长),使用std::search并将相应的迭代器传递给字符串。

tablenameattribute.tablenameattribute(String)之间的模棱两可的错误

我只是升级了.Netv4.0至4.6.1并最终在应用程序中使用的SQL相关属性(tableName,primarykey,列)的歧义错误。我试图弄清楚哪个DLL导致此错误。我正在看到错误tablenameattribute.tablenameattribute(字符串)首要的关键。columnAttribute...等我想知道哪个dll我必须删除看答案歧义是在实体框架和system.com.ponentmodel.dataannotations之间

c++ - 为什么编译器不能优化 std::string concat?

我尝试这样简单的代码:#include#includeintmain(){conststd::strings=std::string("a")+"b";puts(s.c_str());return0;}我希望编译器(gcc4.8.2/clang3.5.0)优化这样的代码intmain(){puts("ab");return0;}但我得不到这样的结果,我尝试了不同的选项,如“-Ofast”、“-flto”、“-static-libstdc++”,但总是在反汇编输出中看到三个函数调用:...callq0x4017e0...callq0x401690...callq0x401490第一个是调

c++ - 变体 bstr 到 std::string 转换的默认编码

我有一个从MSXMLDOM中提取的变体bstr,所以它是UTF-16格式的。我试图找出此转换发生的默认编码:VARIANTvtNodeValue;pNode->get_nodeValue(&vtNodeValue);stringstrValue=(char*)_bstr_t(vtNodeValue);根据测试,我认为默认编码是Windows-1252或Ascii,但我不确定。顺便说一句,这是我正在修复并将变体转换为wstring并通过调用WideCharToMultiByte进行多字节编码的代码块。谢谢! 最佳答案 operator

c++ - boost::ifind_first 与 std::string 对象

我正在尝试使用boost字符串算法进行不区分大小写的搜索。这里是新手。如果我以这种方式使用它,我会得到一个错误。std::stringstr1("Helloworld");std::stringstr2("hello");if(boost::ifind_first(str1,str2))somecode;转换为char指针可以解决问题。boost::ifind_first((char*)str1.c_str(),(char*)str2.c_str());有没有办法直接搜索std::string对象?此外,也许还有另一种方法可以通过不区分大小写的搜索来了解字符串是否存在于另一个字符串中?

c++ - C++ 中的 string[length()] 可以吗?

我同事的代码是这样的:voidcopy(std::stringconst&s,char*d){for(inti=0;i他的应用程序崩溃了,我认为这是因为访问s超出了范围,因为条件应该只达到s.size()-1。但我旁边的其他人说过去曾讨论过这是合法的。谁能帮我解决这个问题? 最佳答案 让我们撇开*d的可能性无效,因为这与问题似乎针对的内容无关:是否std::stringoperator[]()在访问索引std::string::size()处的“元素”时具有明确定义的行为.C++03标准对string::operator[]()的描

c++ - 为什么 std::make_move_iterator 适用于 vector<string> 但不适用于 vector<int>

我期待std::make_move_iterator总是会move内容,但似乎不会。看起来是在vector中move元素但不在vector.请看下面的代码片段:#include#include#include#includevoidmoveIntVector(){std::coutv1;for(unsignedi=0;iv2(std::make_move_iterator(v1.begin()+5),std::make_move_iterator(v1.end()));std::coutv1;for(unsignedi=0;iv2(std::make_move_iterator(v1.