如何访问std::字符串中的char数组



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

我得到的一个函数需要读取"文件"中的数据。为此,我有一个函数,它应该返回一个std::string

如何使用以下函数从文件中读取数据直接转换成std::string

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

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

谢谢!

执行此操作的传统方法是将指针传递到字符串的第一个字符。这是有保证的,因为标准保证std::basic_string内的字符连续存储([basic.string]/2(。

因此,

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

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

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

最新更新