草庐IT

huge_string

全部标签

c++ - std::string::replace 标准实现?

在我能想到的每一种语言中,除了C++,函数Replace本质上是替换字符串的所有部分,而C++的字符串类不支持像下面这样的简单操作:strings="HelloWorld";s=s.Replace("Hello","Goodbye");echos;//Prints"GoodbyeWorld"这似乎是任何类型的字符串替换函数的最常见用法,但在C++中似乎没有标准的替换函数。我在这里遗漏了什么吗?编辑:我知道标准库中没有像这样的内置替换函数——我想知道是否有或多或少的标准实现是由标准算法或类似的东西制成的。 最佳答案 你没有遗漏任何东西

c++ - 迭代器模式 - 错误 C2679 : binary '<<' : no operator found which takes a right-hand operand of type 'std::string'

这个问题在这里已经有了答案:errorC2679:binary'(1个回答)关闭5年前。我正在尝试使用迭代器模式进行迭代和打印,但出现错误这里是错误:errorC2679:binary'couldbe'std::basic_ostream&std::operator>(std::basic_ostream&,constchar*)'这是错误的来源std::coutgetName();#ifndef_ROBOT1_#define_ROBOT1_namespaceguitars{namespaceComposite{namespaceInventoryParts{usingnamespac

java - 使用 SWIG 将 Java Map<String, String> 传递给 C++ 方法

我有一个用C++定义的方法:std::mapvalidate(std::mapkey,std::mapvalue);我想在Java中使用这个方法。所以,我必须使用Swig编写一个包装器,我将能够通过它来传递JavaMap作为STLmap到C++方法。请让我知道我应该如何为swig定义.i文件以完成这项工作。 最佳答案 为此,您需要使用java.util.Map告诉SWIG将%typemap(jstype)用于输入参数。您还需要提供一些代码以将Java映射类型转换为C++std::map类型,SWIG将在适当的点注入(inject)该

c++ - 从 C++ 流中读取特定数量的字符到 std::string

我非常熟悉C++的大部分内容,但我一直避免使用的一个领域是IO流,主要是因为我一直在不适合它们的嵌入式系统上使用它。然而,最近我不得不熟悉它们,而且我正在努力找出一些我认为应该简单的东西。我正在寻找一种相对有效的方法来将固定数量的字符从C++流读取到std::string中。我可以使用read()方法轻松读取临时char数组并将其转换为std::string,但这相当难看并涉及浪费的拷贝。我还可以使用如下内容将整个流读入字符串:std::stringgetFile(std::fstream&inFile){std::stringstreambuffer;buffer...但是无限制地读

c++ - 将 QString 转换为 std::string

我看过其他几篇关于将QString转换为std::string的帖子,应该很简单。但不知何故,我收到了一个错误。我的代码是使用cmake编译到VS项目中的(我使用的是VSexpress),所以QT库没有问题,我编写的GUI除了这部分之外还可以工作。我有一个QComboBoxcb保存一些对象的名称,还有一个QLineEditlineEdit允许我指定我正在寻找的对象的名称。当我按下开始按钮时,它应该运行一个经过测试和工作的函数,并将来自QComboBox和lineEdit的输入作为参数。下面是点击go按钮时的代码:voidgui::on_go_clicked(){std::strings

c++ - 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str':非标准语法;使用 '&' 创建指向成员的指针

我正在尝试创建一个可以读取和编译opengl顶点和片段着色器文件的函数,但是我收到了这个错误:'std::basic_string,std::allocator>::c_str':non-standardsyntax;use'&'tocreateapointertomember我不太确定如何修复它。这是我的代码:GLuintshader_load(constGLchar*vertex,constGLchar*fragment){std::stringver=file_read_all(vertex);std::stringfrag=file_read_all(fragment);con

c++ - 为什么这个编译: string = int

假设如下代码:#include#includeintfunc(){return2;}intmain(){std::stringstr("str");str=func();std::cout为什么行str=func();编译时没有类型不匹配的警告?我正在使用设置了-std=c++11标志的编译器gccv.4.7.1。输出:获取的值:'' 最佳答案 std::string类包含一个重载的operator=,它接受一个char值。由于char是整数类型,int可以隐式转换为char。分配给str的值不是空字符串;它是一个长度为1的字符串,

c++ - 从 ‘boost::filesystem3::path’ 到非标量类型‘std::string’的 boost 错误转换

我有代码:std::stringfirstFile=boost::filesystem::path(first->name()).leaf();但是报错:errorconversionfrom‘boost::filesystem3::path’tonon-scalartype‘std::string我该如何解决?谢谢。 最佳答案 std::stringfirstFile=boost::filesystem::path(first->name()).leaf().string();另请注意,leaf函数已弃用并在Boost.Files

C++ 最大 std::string 长度由堆栈大小或堆大小决定?

如问题中所问。std::stringmyVar;它可以容纳的最大字符是由堆栈还是堆决定的?谢谢 最佳答案 默认情况下,为std::string分配的内存是动态分配的。注意std::string有一个max_size()函数返回实现支持的最大字符数。不过,这样做的用处值得怀疑,因为它是实现的最大值,并且没有考虑其他资源,如内存。您的实际限制要低得多。(尝试分配4GB的连续内存,或者考虑其他地方的内存耗尽。) 关于C++最大std::string长度由堆栈大小或堆大小决定?,我们在Stack

c++ - *v8::String::Utf8Value(args[0]->ToString()) 不返回 node.js 插件参数的字符串

我发现*v8::String::Utf8Value(args[0]->ToString())在Node0.8.232位上返回正确的字符串,但在Node0.8上不返回正确的字符串。8个64位。有人知道为什么吗?我的node.js插件看起来像这样:#defineBUILDING_NODE_EXTENSION#include#defineMAX_OUTPUT_BUF80extern"C"char*do_sqlsig(char*in);usingnamespacev8;HandleSqlsig(constArguments&args){HandleScopescope;char*c_arg,*