正如标题所示,我正在尝试从二进制文件中读取空终止字符串.
std::string ObjElement::ReadStringFromStream(std::ifstream &stream) {
std::string result = "";
char ch;
while (stream.get(ch) != '\0') {
result += ch;
}
return result; }
Run Code Online (Sandbox Code Playgroud)
我的空字符是'\ 0'
但是每当我调用它的方法时,它就会读到文件的末尾
std::ifstream myFile(file, std::ios_base::in | std::ios_base::binary);
myFile.seekg(startByte);
this->name = ObjElement::ReadStringFromStream(myFile);
Run Code Online (Sandbox Code Playgroud)
知道我在这里做错了吗?
istream::get(char &)返回istream对该字符的引用,而不是读取的字符.您可以istream::get()像这样使用变体:
while ((ch = stream.get()) != '\0') {
result += ch;
}
Run Code Online (Sandbox Code Playgroud)
或者使用返回的流引用作为bool:
while (stream.get(ch)) {
if (ch != '\0') {
result += ch;
} else {
break;
}
}
Run Code Online (Sandbox Code Playgroud)
使用std::getline:
#include <string> // for std::getline
std::string ObjElement::ReadStringFromStream(std::ifstream &stream) {
std::string s;
std::getline(stream, s, '\0');
return s;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2863 次 |
| 最近记录: |