草庐IT

c++ - 指针值改变C++

这个问题在这里已经有了答案:Canalocalvariable'smemorybeaccessedoutsideitsscope?(20个答案)关闭3年前。我也是C++编程的新手。当我正在编写有关使用字符指针数组传递参数的代码时。我遇到了一个问题,在某些操作之后我的指针的值被改变了。下面是我的代码。#includeusingnamespacestd;voidinput(char*argv[],int&i){charbuff[10][20];//bufferstringarraywhile(cin.peek()!='\n'){cin>>buff[i++];}for(intj=0;j子函数

c++ - std::vector<std::string> 崩溃

这个问题是myquestion的延续.这是有问题的代码。嗯:#include#includestd::vectorfoo();a.cpp#include"a.h"std::vectorfoo(){std::vectorv;returnv;}最后是main.cpp:#include"a.h"#includeintmain(){std::vectors=foo();return0;}编译如下(main.cpp是带STL调试标志编译的):g++-ca.cppg++-D_GLIBCXX_DEBUGmain.cppa.o运行a.out时,进程崩溃:Corewasgeneratedby`./a.o

C++ 安置新

如果这个问题听起来很愚蠢,我很抱歉,但我才刚刚开始学习C++,我对new的位置有些困惑我一直在阅读C++Primer(我发现这是一本非常好的学习C++的书),并且在placementnew部分中给出了一个示例。示例使用char数组为放置new提供内存空间constintBUF=512;constintN=5;charbuffer[BUF];double*pd1;pd1=new(buffer)double[N];我的问题是为什么要用char数组为placementnew提供内存空间?还有上面代码的最后一行是为一个double数组分配内存,当原来的内存空间是一个char数组怎么可能呢?如果

c++ - 从字符串到字符的转换 - C++

对于我根据规范编写的程序,变量作为字符串传递给函数。我需要将该字符串设置为char变量才能设置另一个变量。我该怎么做呢?这是在头文件中:voidsetDisplayChar(chardisplayCharToSet);这是设置它的函数:voidEntity::setElementData(stringelementName,stringvalue){if(elementName=="name"){setName(value);}elseif(elementName=="displayChar"){//charc;//c=value.c_str();setDisplayChar('x')

c++ - 在 C++ 中命名 int 或 char 变量时, "n"或 "ch"前缀是常见前缀吗?

我目前正在浏览learncpp.com的C++教程,我看到他们的变量命名趋势是使用“n”前缀(即intnValue)和“ch”前缀为char变量(即charchOperation)命名int变量。这是不是我现在应该养成的行业普遍现象? 最佳答案 Isthissomethingthatiscommonplaceintheindustry?由于对somewhatmoreusefulconvention的误解,这种做法在二十或三十年前的Microsoft某些部门很常见。公司其他部分使用(标记变量表明它们的用途,在弱类型语言中,这有助于避免

c++ - operator const char* 以奇怪的方式覆盖(?)我的另一个变量

#include#includeclassVector{double_x;double_y;public:Vector(doublex,doubley):_x(x),_y(y){}doublegetX(){return_x;}doublegetY(){return_y;}operatorconstchar*(){std::ostringstreamos;os这个程序的输出:$./a.outVectorw1(1.1,2.2)Vectorw2(3.3,4.4)Vector(3.3,4.4)Vector(3.3,4.4)我不明白为什么会得到输出。似乎是“constchar*n2=w2;”覆盖

c++ - 如何让一个 char* 指向一个 char[]?

我想知道是否有办法让char*指向char数组的内容,这样我就可以修改char*跨功能。例如voidtoup(char*c){chararray[sizeof(c)];for(intx;x尝试使array=char*似乎不起作用。是否可以让char*指向char数组? 最佳答案 Isitpossibletomakethechar*pointtothechararray?是的。而不是:intmain(){char*c="Hello";toup(c);}使用:intmain(){charc[]="Hello";toup(c);}char

c++ - 我需要链接哪些库来构建 googlemock 示例?

我能够在VS2010中编译googlemockv1.6.x并生成发布和调试库。换句话说,我遇到的问题不是这个GoogleMockandGoogleTestinVisualStudio2010现在我按照这里的例子http://code.google.com/p/googlemock/wiki/ForDummies,我遇到了这些错误。我确实链接了生成的*.lib文件并在VS2010中添加了正确的库目录。那么我还需要链接什么?1>msvcprtd.lib(MSVCP100D.dll):errorLNK2005:"public:__thiscallstd::_Container_base12:

c++ - std::make_pair:无法将 'ch'(类型 'char')转换为类型 'char&&'

这个问题在这里已经有了答案:C++11make_pairwithspecifiedtemplateparametersdoesn'tcompile(1个回答)关闭9年前。以下代码有什么问题:#include#include#include#include#includeintmain(){std::vector>vec;for(unsignedi=0;i(ch,number))!=vec.end());std::cout(ch,number));}}它确实可以很好地编译:g++test.cxx但失败了:$g++-std=c++11test.cxx/tmptest.cxx:Infunct

c++ - const char * 和 char *

我明白了char*s="HelloWorld!";存储在只读内存中,不能通过指针修改字符串文字。这和有什么不同constchar*s="HelloWorld!";另外'string'的类型是char*还是constchar*? 最佳答案 区别在于后者合法,前者不合法。这是在C++11中所做的更改。形式上,"HelloWorld!"的类型为constchar[13];它可以转换为constchar*。在过去,它的类型可能是char[13],可以转换为char*。C++通过添加const更改了数组的类型,但保留了对char*的转换,以便