草庐IT

huge_string

全部标签

c++ - 十六进制字符到 std::string 的 constexpr 转换

我有很多这样的字符串:"343536"_hex我想将其转换成相应的字节串。我正在使用C++11并定义了一个用户定义的字符串文字以将它们转换为十六进制字符串。但是,我目前拥有的转换不能作为我正在寻找的constexpr进行评估。特别是我想使用这样的东西,但作为constexpr:std::stringoperator""_hex(constchar*s,std::size_tslen){std::stringstr;str.reserve(slen);charch[3];unsignedlongnum;ch[2]='\0';for(;slen;slen-=2,s+=2){ch[0]=s[

c++ - 为什么 bool 到 string 的隐式转换不是错误?

我仔细查看并尝试在SO上找到类似的问题,但没有找到任何有用的信息。所以,在这里发布我的问题。考虑这个程序:#includevoidfoo(conststd::string&){}intmain(){foo(false);}[Warning]converting'false'topointertypeforargument1of'std::basic_string::basic_string(const_CharT*,const_Alloc&)[with_CharT=char;_Traits=std::char_traits;_Alloc=std::allocator]'[-Wconve

c++ - 打印二维 std::string 数组

我正在尝试用C++初始化一个井字棋盘,但输出总是给我六进制值。有没有办法将它们转换为实际的字符串值?#include#includeusingnamespacestd;intmain(){stringtab[5][5]={"1","|","2","|","3","-","+","-","+","-","4","|","5","|","6","-","+","-","+","-","7","|","8","|","9"};for(inti=0;i 最佳答案 您正在将tab[i]的值发送到cout,因此您将获得内存地址。您可能希望将项目

c++ - 改变 const std::string 引用的引用

我正在研究C++中的引用,并注意到一些我无法解释的奇怪行为。我的理解是,如果我有一个非常量变量和对同一变量的const引用,然后修改非常量变量,该引用应该反射(reflect)该修改。例子:voidfoo(){intx=5;constint&y=x;x=10;std::cout为我生成以下输出:x=10y=10但是,如果我将类型更改为std::string,const引用似乎不会反射(reflect)修改后的变量:voidfoo(){std::stringx="abc";conststd::string&y=x;x="xyz";std::cout为我生成以下内容:x=xyzy=abc这

c++ - std::string::c_str() 如何返回不会导致内存泄漏或未定义的 c 字符串内容的 c 字符串?

我正在为家庭作业编写一个类似于std::string的字符串类,但我无法弄清楚如何返回一个不会导致内存泄漏并保证保持不变的c字符串,直到它不再使用。我目前有:constchar*string::c_str(){charc[_size+1];strncpy(c,_data,_size);c[_size]='\0';returnc;}但是内容在调用后不久就被覆盖了。如果我进行动态分配,我要么会发生内存泄漏,要么在任何时候给定字符串中只能存在一个c字符串。我怎样才能避免这种情况? 最佳答案 但是c_str指向的字符串只有在std::str

C++ 通过引用 dll 中的函数传递 std::string

我在通过引用传递std::string以在dll中运行时遇到问题。这是函数调用:CAFCAFCArchive;std::stringsSSS=std::string("data\\gtasa.afc");AFCER_PRINT_RET(AFCArchive.OpenArchive(sSSS.c_str()));//AFCER_PRINT_RET(AFCArchive.OpenArchive(sSSS));//AFCER_PRINT_RET(AFCArchive.OpenArchive("data\\gtasa.afc"));这是函数头:#defineAFCLIBDLL_API__dec

c++ - 将 std::string ** 转换为 char *** 它恰好可以工作。如何?

考虑以下代码:std::vectorfoo{{"blee"},{"bleck"},{"blah0000000000000000000000000000000000000000000000000000000000000000000000000000000000"}};std::string*temp=foo.data();char***bar=reinterpret_cast(&temp);for(size_ti=0;i显然这是粗略的代码,但它恰好有效。http://ideone.com/2XAJYR我想知道它为什么有效?是否有一些我不知道的C++奇怪规则?还是仅仅是糟糕的代码和未定义的

c++ - 如何将 std::string 转换为 BSTR*?

如何将std::string转换为BSTR*?STDMETHODIMPCMyRESTApp::rest(BSTRdata,BSTR*restr){RESTClientrestclient;RESTClient::responseresp=restclient.get(data);Log("ResponseStatuscode:%s",resp.code);Log("ResponseBody:%s",resp.body);*restr=//herereturnS_OK;}我需要转换resp.body,然后将其返回给此处的*restr。 最佳答案

c++ - 临时 std::strings 返回垃圾

我还在学习c++,所以请多多包涵。我正在围绕boost文件系统路径编写一个简单的包装器——我在返回临时字符串时遇到了奇怪的问题。这是我的简单类(这不准确,但非常接近):typedefconstchar*CString;typedefstd::stringString;typedefboost::filesystem::pathPath;classFileReference{public:FileReference(constchar*path):mPath(path){};//returnsapathStringpath()const{returnmPath.string();};//

c++ - 从 ‘void’ 到非标量类型的转换‘std::pair<std::basic_string<char, std::char_traits<char>

我在电子表格obj中有一堆对:std::stack>undoStack;我正在尝试弹出堆栈并将其分配给另一对:std::pairchange=spreadsheets.at(i).undoStack.pop();我收到这个错误:error:conversionfrom‘void’tonon-scalartype‘std::pair,std::allocator>,std::basic_string,std::allocator>>’requested这里出了什么问题? 最佳答案 stack::pop()返回void但您正试图将其分配