如何访问 std::string 中的字符数组?

How can i access the char array inside of an std::string?

我接到了一项任务,要在 Linux 中编写一个文件系统,将存储设备模拟为文件。

我得到的其中一个函数需要读取 "file" 中的数据。为此,我有一个函数应该 return 和 std::string

如何使用以下函数从文件中读取数据 直接进入 std::string?

void read(int addr, int size, char *ans)

有没有办法将 std::string 中的字符数组作为参数传递给此函数? 到目前为止我遇到的所有方法和成员函数都只有 return const char* 在这种情况下不起作用。

谢谢!

这样做的传统方法是传递一个指向字符串第一个字符的指针。这保证有效,因为标准保证 std::basic_string 中的字符连续存储 ([basic.string]/2)。

因此,

read(addr, str.size(), & str[0]);

有效,但前提是您之前已将字符串大小调整为非零大小。此外,您的 read 函数不会告诉您 读取了多少 个字符。您的 IO API 中需要一些功能来告诉您这一点。

实际上,这样做是个坏主意,因为那样 std::string class 不知道插入了多少个字符。最好创建本地缓冲区 std::array<char, 256> buf,将其传递给函数,然后使用 std::string(buf.data, buf.size()) 将其放入 std::string