获取行();提取以 1A 字符停止

Getline(); extraction stops with the 1A character

所以我不知道如何正确解释这一点,但我会尽力而为。

我正在尝试将文件保存到字符串中,它不是 .txt 文件,而是 .umsbt 文件,因此它具有奇怪的 ASCII 字符(如 00、0A、0E、1A...),所以当我使用 getline(); 将 .umsbt 保存到字符串中,然后使用 cout 打印它,整个文件没有打印出来,当我通过 HxD(十六进制编辑器)打开实际文件时,我看到打印在 1A 字符之前停止,做了一些测试,这是 1A 字符的错误。

这是我的代码

#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <string>
#include <string.h>
#include <conio.h>
#include <sstream>

using namespace std;

string line;    //the file is stored here
string name; //name of the file


void printfile() {

    int o = 0;
    int fileCount;

    ifstream file;
    file.open(name, ios::in);

    if (file.fail()) {

        cout << "Not found \n";
        cin.get();
        cin.get();
        exit(1);

    }else {

        file.seekg(0, ios::end);
        fileCount = file.tellg();
        file.seekg(0);

        while (!file.eof()) {


            getline(file, line);
            cout << "file character count: " << fileCount << endl;
            cout << "string character count: " << line.length() << "\n" << endl;


            for (int i = 0; i < line.length(); i++) {

                cout << line[i];
                o++;
                if (o == 16) {
                    cout << "\n";
                    o = 0;
                }
            }

        }
        file.close();
    }

}
int main()
{
    cin.ignore(26, '\n');

    cout << "Write the name of your file (.umsbt included) \n" << endl;

    cin >> name;

    cout << "\n";

    printfile();

    cin.get();
    cin.get();
    return 0;
}

希望有人能帮助我,我目前正在尝试 remove/replace 任何文件中的所有 1A 字符,限制是你必须在 ifstream 本身中这样做,因为你不能' t 将其保存为字符串(会导致 1A 出现问题,文件将无法完整保存)

(这是在 HxD 中打开的文件的图片,希望您对它有所了解 https://imgur.com/a/1uQzOPq

提前致谢

看来您使用的是二进制文件,而不是普通的文本文件。 查看这些链接以了解二进制文件。

https://study.com/academy/lesson/writing-reading-binary-files-in-c-programming.html https://computer.howstuffworks.com/c39.htm

再见, 塞缪尔