小编Pet*_*ker的帖子

关于const_cast <>的行为

我写了一个小问题来检查const数据成员上const_cast的行为.

using namespace std;


     class myString{
         public:
                 myString(char * str)
                 {
                         p=str;
                 }
                 const char * getString(){
                         return p;
                 }
         private:
                 const char *p;
 } ;


int main()
{
        char *p=(char*)malloc(8);
        cin>>p;
        myString *m= new myString(p);
        char *s =const_cast<char*>(m->getString());
        s[6]='y';
        cout<<s<<endl;
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

运行此程序后,我将其作为"yogendra"(8个字母的字符串).我把输出称为"yogendya"现在我怀疑了.通过const_cast <>我们可以覆盖数据成员本身的行为,因为这里的字符串是const char*仍然在转换后我可以修改它.

c++ const-cast

0
推荐指数
1
解决办法
191
查看次数

C++:读取没有扩展名的文件

我有一些文件类型为"文件"我的意思是代替"资源\ sample.txt",他们的名字是"资源\样本"现在我想用c ++读取它们并将它们存储在一个字符串中.这是我的代码:

std::stringstream textBuffer;
std::fstream fileHandle;
std::string content
fileHandle.open("Resource\sample", std::ios::in);
textBuffer << fileHandle.rdbuf();
content = textBuffer.str();
fileHandle.close();
Run Code Online (Sandbox Code Playgroud)

但是当我编译它时,"content"变量的值等于"".帮助我.提前致谢.请注意,唯一的问题是文件没有任何扩展名,例如.txt或.dat或.bin.

c++ fstream file istream ostream

0
推荐指数
1
解决办法
646
查看次数

我的 CPU/操作系统可以处理多少个线程?

我创建了一个 C++ 应用程序。可以同时运行多少个线程?

c++ multithreading

0
推荐指数
1
解决办法
1448
查看次数

在visual studio中定义与typedef枚举冲突的原因是什么?

我有一些代码,这里有一些看起来像这个的代码(我当然简化了)

#define ERROR 0

namespace lib{
    class Logger{
         public:
             typedef enum {ERROR = 1} LogLevel;
    };
}
Run Code Online (Sandbox Code Playgroud)

在visual studio中编译我得到错误:syntax error: 'constant'.很明显,问题是我重新使用了ERROR这个词作为define和typedef枚举.

有没有人知道定义的逻辑影响一些变量名称,它实际上包含在命名空间和类中.我的意思是,怎么可能ERROR混淆,lib::Logger::ERROR因为我的猜测是他们有完全不同的范围.

c++ visual-studio

0
推荐指数
1
解决办法
81
查看次数

构造对象后shared_from_this中的std :: bad_weak_ptr异常

我有一个类似于以下内容的类:

class A : std::enable_shared_from_this<A> {
public: 
  static std::shared_ptr<A> create() {
    return std::shared_ptr<A>(new A());
  }

  void f() { 
    shared_from_this();
  }

private:
  A() { }
};
Run Code Online (Sandbox Code Playgroud)

它的用法类似于:

std::shared_ptr<A> pt = A::create();
pt->f();
Run Code Online (Sandbox Code Playgroud)

尽管在pt创建shared_ptr之后调用了shared_from_this()的调用,但对该调用的调用f()仍然会bad_weak_ptr引发异常。运行它可以gdb确认对的调用引发了异常,f()而不是在教师未在此处包括的某些代码中引发了异常。

c++ inheritance shared-ptr

0
推荐指数
1
解决办法
213
查看次数

为什么while(文件>> a)有效?

我必须从只有少数数字的文件中读取.阅读它,总结它们就是这样.(学习C++).如果我使用fstream :: eof()函数,它会读取最后一个数字两次,所以我这样做:

#include <iostream>
#include <fstream>

using namespace std;

int main() {
    fstream file;
    int a = 0, sum = 0;

    file.open("nums.txt",fstream::in);

    if (!file.is_open()) {
        cout << "Unable to open file!\n" << endl;
    }

    while (file >> a) {
        cout << a << endl;
        sum += a;
    }

    cout << "Sum: " << sum << endl;

    file.close();

    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在它不会读取最后一个数字两次,但我不明白while()括号中发生了什么,我想如果我读0就会停止,但它也会读取它.文件>> a实际返回的内容类似于"托管阅读"= 1和"失败"= 0 ??

谢谢

c++ file while-loop

-1
推荐指数
1
解决办法
80
查看次数

为什么C++中的成员函数在对象名后面用点运算符访问?

在Python中,对成员函数或方法的任何绑定调用都会转换为未绑定调用,即:obj.method()相当于method(obj).这就是为什么每个成员函数的第一个参数本身.

在C++中是否有类似的概念解释了为什么使用点运算符访问成员函数?

c++ c++11

-4
推荐指数
1
解决办法
1727
查看次数