我正在尝试将字符串与argv参数进行比较.
我的主要内容是:
int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)
现在,如果我写
if (argv[2] == 'squared')
Run Code Online (Sandbox Code Playgroud)
IDE告诉我,我有一个多字符常量,或者char*对于它的类型或类似的东西来说太长了.
有没有办法将argv与字符串进行比较?我甚至使用过strcmp,但在程序运行时会给我一个分段错误.
我也尝试了一个for循环并增加了argv [i],但这也给了我一个错误.
也许我错过了什么?
可能的重复:
如何正确解除分配或删除 C++ 向量?
我在尝试删除我在向量中分配的内存时遇到了一些问题。即使我调用 list.clear(),它也不会释放内存。
所以我在一个名为 Set 的基于模板的类中有一些这样的代码
template <class T>
class Set {
public:
// stuff
private:
int size;
std::vector<T> list;
};
Run Code Online (Sandbox Code Playgroud)
在构造函数中,我为向量分配了内存。所以我调用 list = new std::vector;
为了您的兴趣,这里是我的复制构造函数和赋值运算符,我也知道我还为向量分配内存的地方:
template <class T>
Set<T>::Set(const Set& aSet)
{
size = aSet.size;
list->clear();
list = new vector<T>;
for (int i = 0; i < size; ++i) {
list[i] = aSet.list[i];
}
}
template <class T>
Set<T>& Set<T>::operator=(const Set& right)
{
if (this != &right) {
list->clear();
size = right.size;
list = new …Run Code Online (Sandbox Code Playgroud)