如何从char *赋值std::string

  • 本文关键字:std string 赋值 char c++
  • 更新时间 :
  • 英文 :


这可能是微不足道的,但我是C++的新手,在这里感到困惑。

我有方法:

bool load_database_file( const std::string& filename, std::string& contents ) {
    std::ifstream is (filename, std::ifstream::binary);
    if (is) {
        // get length of file:
        is.seekg (0, is.end);
        int length = (int)is.tellg();
        is.seekg (0, is.beg);
        char * buffer = new char [length];
        std::cout << "Reading " << length << " characters... ";
        // read data as a block:
        is.read (buffer, length);
        if (is)
            std::cout << "all characters read successfully.";
        else
            std::cout << "error: only " << is.gcount() << " could be read";
        is.close();
        // ...buffer contains the entire file...
        std::string str(buffer);
        contents = str;
        delete[] buffer;
    }
    return true ;  
}

,我想读取一个文件,并将其内容分配给contents,以便调用函数可以读取它。

我的问题是,在这个函数运行后,我看到只有buffer的第一个字符被复制到contents

如何将buffer (char *)的全部内容复制/转换为contents (std::string)。

    std::string str(buffer);
应:

    std::string str(buffer, buffer+length);

否则,构造函数如何知道要分配/复制多少字节?

顺便说一下,你的代码是不必要的笨拙。为什么不直接读入字符串的缓冲区,而不是在分配另一个缓冲区之前使用一个单独的缓冲区来分配和释放数据?

最新更新