如何访问 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
。
我接到了一项任务,要在 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
。