这一直令人难以置信,简单的代码:
int main()
{
typedef std::string::size_type stype;
std::cout << "What is your first name?\n";
std::string first,second,fullname;
std::cin >> first;
std::cout << "What is your second name?\n";
std::cin >> second;
char * backwards;
fullname = first + " " + second;
stype fnsize = fullname.size();
backwards = new char [fnsize];
stype b = 0;
for(stype a = fnsize; a != 0; --a)
{
backwards[b++] = fullname[a - 1];
}
std::cout << backwards << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
大部分时间都在工作,但是当我写一个像我自己的名字stanislaw terziev时,我得到一个输出 …
我一直在使用c ++,并且出于某种原因,每次遇到在循环中访问的数组时,它都会一直给我这个错误消息,例如:
int i2 = 0;
for(int n=0; n<sizeof(mapy); n++)
{
xybar[i2] = mapx[n] * mapy[n];//
xbar_squared[i2] = mapx[n] * mapx[n];//
i2++;
}
Run Code Online (Sandbox Code Playgroud)
i2因为我意识到它不需要的原因是因为当我检查这些值时,我意识到迭代器n已经被替换为值2006而不是数组中的位置导致它在下一次调用时失败,因为它由于我的数组只包含500个数据,因此超出范围.我认为i2可能会解决这个问题,但事实并非如此.
如何检查字符数组?例如,我正在制作一个程序,要求我输入密码,让我们说ZEZO,然后检查它是否正确,然后打印" hello zezo ".我目前正在使用turbo c ++来学校.我有一个示例程序:
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
char * zezo;
zezo = "Zezo";
cout<<"Hello "<<zezo;
}
Run Code Online (Sandbox Code Playgroud)
我只需要知道如何检查单词.
调用迭代方法是否安全,例如STL容器擦除(覆盖2个迭代器),例如在我的情况下std::vector::erase(),两个参数都是vec.end()?我做了一个实验,看起来调用什么也没做,但我想确保我可以在代码中安全地使用它,否则我必须测试我的迭代器并避免erase()它们是相等的.
所以,如果我理解正确,整数是一个字节的集合,它代表基数为二的格式,如果你愿意的话.
因此,如果我有unsigned int test = 0,那么实际上应该只包含一个位字段,所有这些都是零.然而,
unsigned int test=0;
test=~test;
Run Code Online (Sandbox Code Playgroud)
产生-1.
我会认为这将填满所有的位'1',使整数与该系统上的整数一样大....
谢谢你的帮助!
我正在尝试制作一个程序来演示我的CS类使用模板和重载操作符.这是相关代码:
主要:
ArrayTemplate<int> number(0);
number[0] = 1;
number[1] = 2;
number[2] = 3;
ArrayTemplate<string> word("na");
word[0] = "One";
word[1] = "Two";
word[2] = "Three";
Run Code Online (Sandbox Code Playgroud)
标题:
template<class T>
T& operator [](const int index)
{
if(index >= 0 && index < ARRAY_MAX_SIZE)
return items[index];
else
{
cerr << "INDEX OUT OF BOUNDS!!!";
exit(1);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试使用我的重载下标运算符时,我得到标题中显示的错误消息:"没有这样的运算符"[]"匹配这些操作数"我不完全确定原因.它为我的整数数组和我的字符串数组都做了.任何帮助表示赞赏.
我有一个struct名字和号码:
struct S {
string name;
int number;
};
Run Code Online (Sandbox Code Playgroud)
对象S存储在向量中.矢量基于排序name.可能有多个项目具有相同的项目name.
迭代向量中的项目时,我试图count_if用来检测重复项:
for(size_t i = 0; i < v.size(); ++i)
{
const S& s = v[i];
int count = count_if(v.begin(), v.end(), XXX);
// do something with count
}
Run Code Online (Sandbox Code Playgroud)
在上面,我无法弄清楚XXX应该是什么.我试图创建一个谓词,但它没有用,因为没有什么可比较的:
bool IsEqualName(const S& s) {
return s.name == ???;
}
Run Code Online (Sandbox Code Playgroud)
我发现的文档有很多不足之处.
我觉得我错过了一些非常明显的东西,但我看不出它是什么.有谁可以指出我的错误?
杰夫
对于原始人,我认为这是必要的. 即使是非原始的,例如数组,我认为这也是必要的.
没有不稳定:
int d[2];
Run Code Online (Sandbox Code Playgroud)
线程1:
while (d[1] > 0) modify(d[0]);
Run Code Online (Sandbox Code Playgroud)
线程2:
while (d[0] > 0) modify(d[1]);
Run Code Online (Sandbox Code Playgroud)
我担心编译器会在没有volatile的情况下更改我的代码.while(true)modify();
所以我在'int d [2]'之前放了volatile; 但是我觉得有点奇怪,一切都装饰着挥发性.
我在多线程环境中运行程序,它在某些时候失败了.当我尝试使用gdb而不是显示以下错误.
程序接收信号SIGSEGV,分段故障.
[切换到线程0x7fff677b700(LWP 2777)] 0x00007ffff7aa42b9 in process_incomplete_rows(resultset = 0x507950)at c/mgmt.c:479 479 c/mgmt.c:没有这样的文件或目录.
mgmt.c文件在那里,这个代码适用于某些选项,但有两个或三个选项,它给出了这个错误.可能是导致此错误的原因.它在编码或系统中的错误?或访问某些数据时出错?
Time t (12, 0, 0); t.GetTime();
Time* t = new Time(12, 0, 0); t->GetTime();
Run Code Online (Sandbox Code Playgroud)
这是使用没有new关键字和新关键字创建的对象来调用方法的正确方法吗?谢谢..