草庐IT

c++ - 检查数组是否包含字符

好的,这就是我一直在尝试做的,如果我错了请纠正我我正在尝试检查myarray是否包含字符abcd。我正在考虑这样做:char*myarray[]={"hello","wooorld","hi"};if(myarray->Contains(abcd)){//dostuff}我的问题是,是否有更好的方法? 最佳答案 一种方法是将std::string和std::vector与std::find算法一起使用:std::vectorstrs{"hello","wooorld","hi"};std::stringtoFind="abcd";i

c++ - 在 C++ 中将字符串 vector 转换为 char 数组

我正在尝试将字符串vector转换为C++中的字符数组。更具体地说,我正在尝试做的是使用以下命令拆分一个shell命令,例如“ls–latr”:istringstreamf(x);while(getline(f,x,'')){strings.push_back(x);}我相信这会给我strings[0]=="ls"和strings[1]=="-latr"。然后我正在尝试执行以下操作:execvp(strings[0],strings);但是,我得到这个错误:error:cannotconvert‘std::basic_string,std::allocator>’to‘constcha

c++ - 此指针类型转换符号的含义

我已经多次看到这种类型的声明,但不知道它在做什么:*(type*)$var例如:*(char*)&myChar如果正在检索myChar的地址并将其转换为char指针,那么为什么额外的指针在外面,为什么地址可能是int或hex值被转换为指针?这对我来说毫无意义。我是初学者,所以请逐步解释这里发生了什么,以及为什么使用这种令人困惑的格式进行类型转换。谢谢。 最佳答案 *(char*)&myChar获取myChar的地址,然后转换为char*,最后访问它指向的对象。效果是,访问将根据类型转换指针类型。例如intx;charc=*(char

c++ - 如何让 scons 将 Clang 与 libc++ 一起使用?

如何让scons将Clang与libc++一起使用?将“-stdlib=libc++”放入我传递给环境的任何标志中会导致undefinedreference错误,如下所示:hello.o:Infunction`main':hello.cpp:(.text+0xc):undefinedreferenceto`std::__1::cout'hello.o:Infunction`std::__1::basic_ostream>&std::__1::endl>(std::__1::basic_ostream>&)': 最佳答案 选择libc

c++ - 如何干净地使用:const char* 和 std::string?

tl:drHowcanIconcatenateconstchar*withstd::string,neatlyandelegantly,withoutmultiplefunctioncalls.Ideallyinonefunctioncallandhavetheoutputbeaconstchar*.Isthisimpossible,whatisanoptimumsolution?初始问题到目前为止,我在C++中遇到的最大障碍是它如何处理字符串。在我看来,在所有广泛使用的语言中,它处理字符串的能力最差。我见过其他与此类似的问题,这些问题的答案要么是“使用std::string”,要么只

c++ - 如何连接 "constant strings"和字符?

执行以下操作的“正确方法”是什么?(注意,我还不想将消息输出到屏幕上,数据需要存储在一个变量中。)std::cout>input;std::stringmessage="Today'sprogramwasbroughttoyoubytheletter'"+input+"'.";代码给出了错误消息invalidoperandsoftypesconstchar*andconstchar[3]tobinaryoperator+。我明白为什么会出现此消息。在谷歌搜索解决方案时,出现的结果建议依次将每个项目转换为字符串。但是,如果您必须连接十几个项目,这就变得不切实际了:std::string(

c++ - 如何从 C++ 中的 bitset<16> 中选择前 8 位?

我有一个变量,它的类型是bitset。我想获取变量的前8位并将其放入char变量中。我知道如何将bitset转换为char,但我不知道如何选择前8位并将其转换为char。 最佳答案 如果“前8位”是指8-MSB,请考虑使用>>运算符:#includeintmain(){std::bitsetmyBits(0b0110110001111101);charreg=0;reg=static_cast(myBits.to_ulong()>>8);} 关于c++-如何从C++中的bitset中选择

c++ - 如何在 GCC 5 中处理双 ABI?

我试图了解如何解决GCC5中引入的双ABI的问题。但是,我没能做到。这是一个非常简单的重现错误的例子。我使用的GCC版本是5.2。如您所见,我的主要功能(在main.cpp文件中)非常简单://main.cpp#include#includeintmain(){std::stringmessage="SUCCESS!";std::cout当我打字时/home/aleph/gcc/5.2.0/bin/g++main.cpp我收到以下错误消息:/tmp/ccjsTADd.o:Infunction`main':main.cpp:(.text+0x26):undefinedreferencet

c++ - 复制构造函数为动态分配做了什么

这个问题在这里已经有了答案:WhatisTheRuleofThree?(8个答案)关闭6年前。我很好奇为什么拷贝构造函数对于我自己定义类的动态分配如此重要。我正在实现具有动态分配的低级c字符串类,这是我的类的快速ViewclassString{private:char*buf;boolinBounds(inti){returni>=0&&i我知道strdup()函数的部分并不正确,但我只是在做一些测试。我的问题是如果我没有复制构造函数而我的main()是intmain(){Stringb("abc");Stringa(b);cout编译器会告诉我doublefreeorcorrupti

C++ 从 char* 到 char 的无效转换 (char* = *string.begin() )

我有以下代码:std::stringextract(){fstreamopenfile("/home/name/Documents/testfile");std::stringteststring;longlocation=4;longlength=2;teststring.resize(length);char*begin=*teststring.begin();openfile.seekp(location);openfile.read(begin,length);returnteststring;}此代码应该返回在文件中找到的字符串。例如,如果文件的内容是StackOverflo