草庐IT

Rolling_std

全部标签

c++ - std::string erase 删除最后一个字母

我想为游戏输入一些内容,然后在按退格键后删除字符串中的最后一个字母。我不确定是否应该执行text.end-1或+1到end来执行此操作:if(GetAsyncKeyState(VK_BACK))text.erase(text.end-1,text.end); 最佳答案 std::string实际上有一个pop_back()方法!所以你可以这样做:if(GetAsyncKeyState(VK_BACK)&&!text.empty()){text.pop_back();} 关于c++-std

c++ - 如何在编译时解析静态常量 std::string?

我的C++代码中有一些带有绑定(bind)的SQL查询,这些查询是staticconststd::string,因为这些查询很复杂,所以很容易在某些细节上出错。我想在编译时做一些非常基本的检查,例如计算逗号或:字符的数量。 最佳答案 你不能。staticconststd::string在编译时不存在。constexpr函数可以使用字符串文字,但不能使用std::string对象。 关于c++-如何在编译时解析静态常量std::string?,我们在StackOverflow上找到一个类似

c++ - 我可以在不使用原始指针的情况下避免在 std::initializer_list 初始化期间进行复制吗?

假设我有几个在本地声明的对象,我想使用基于范围的for语法对其进行迭代。这似乎运作良好,但是,似乎要将本地对象放入initializer_list,执行复制。这对于像std::shared_ptr这样的对象来说是个坏消息,据我所知,增加引用计数是一个原子操作。我认为可以避免这种情况的唯一方法是使用原始指针。#include#includeintmain(){std::shared_ptrptrInt1=std::make_shared(1);std::shared_ptrptrInt2=std::make_shared(2);/*inthisloop,ptrInt1andptrInt2

c++ - 为什么没有 std::move_if 算法?

我在Internet上看到一些地方描述了将std::copy_if与std::make_move_iterator一起使用,但是如果迭代器是前向的迭代器,这将导致在源容器周围散布有效但未指定(VBU)的对象。如果有一个std::move_if算法会不会更好,如果一个对象被移动,那么它会将生成的VBU对象移动到范围的末尾,就像那个是在std::remove_if算法中完成的,将所有VBU对象合并在一起,以便它们可以被删除或重新分配? 最佳答案 如果move_if作为算法存在,则必须指定为:templateOutputItmove_if

c++ - 什么时候适合使用 std::optional

我想知道这是否会被视为std::optional的有效用法。我有一个返回process_id(std::uint32_t值)的函数,使用标准的“std::uint32_t会更有效吗>"如果我​​们找不到目标进程ID或返回std::optional更合适则返回0的函数?例子:std::optionalFindProcessID(std::string_viewprocess){boolfind=false;if(!find)//wefailtofindtheprocess_idandreturnnothing.returnstd::nullopt;elseif(find)return10

c++ - 如何在 QLineEdit 中使用 std::string?

我有以下问题。我正在尝试将我编写的大型代码与Qt界面集成。我的一些函数返回std::string。我没有成功地让QLineEdit::setText接受它们(其他返回char的函数不会给我带来问题)。我该怎么办?谢谢!朱塞佩 最佳答案 试试这个:std::stringa="aaa";lineEdit->setText(QString::fromStdString(a));您将需要支持STL的Qt。 关于c++-如何在QLineEdit中使用std::string?,我们在StackOve

c++ - std::list of boost::shared_ptr 的迭代器问题

我在使用以下代码时遇到问题:#include#include#include"Protocol/IMessage.hpp"templateclassConnection{public:typedefIMessageMessageType;typedefboost::shared_ptrMessagePointer;templatevoidFlushMessageQueue(Handlerhandler){std::list::iteratorib=message_queue_.begin();//line69std::list::iteratorie=message_queue_.en

c++ - std::ostringstream 问题

我可以std::ostringstreamoss;oss为什么我不能:((std::ostringstream())谢谢! 最佳答案 运算符返回基类型ostream,而str成员函数仅存在于派生类型上ostringstream. 关于c++-std::ostringstream问题,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2196121/

c++ - 可以在构造函数中分配 std::string 吗?

我有以下构造函数:TCPConnector(int32_tfd,stringip,uint16_tport,vector&protocolChain,constVariant&customParameters):IOHandler(fd,IOHT_TCP_CONNECTOR){_ip=ip;_port=port;_protocolChain=protocolChain;_closeSocket=true;_customParameters=customParameters;}我想知道是否可以在构造函数中安全地分配一个字符串(即_ip)而无需显式初始化它? 最

c++ - 以下 std::vector 代码是否有效?

std::vectorvec;Foofoo(...);assert(vec.size()==0);vec.reserve(100);//I'vereserved100elemsvec[50]=foo;//butIhaven'tinitializedanyofthem//soamIassigningintouninitializedmemory?上面的代码安全吗? 最佳答案 这是无效的。该vector没有元素,因此您无法访问其中的任何元素。您刚刚为100元素保留了空间(这意味着可以保证在插入超过100个元素之前不会发生重新分配)。事实