获取行();提取以 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
再见,
塞缪尔
所以我不知道如何正确解释这一点,但我会尽力而为。
我正在尝试将文件保存到字符串中,它不是 .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
再见, 塞缪尔