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

Gil*_*Raz 3 c++ arrays stdstring

我的任务是在 Linux 中编写一个文件系统,该系统将存储设备模拟为文件。

我被赋予的功能之一需要读取“文件”中的数据。为此,我有一个应该返回std::string.

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

void read(int addr, int size, char *ans)
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Kon*_*lph 5

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

因此,

read(addr, str.size(), & str[0]);
Run Code Online (Sandbox Code Playgroud)

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

  • 因为 c++17 [`str.data()`](https://en.cppreference.com/w/cpp/string/basic_string/data) 是一个可行的选择。 (2认同)