如何在C++中读取带有ifstream的替换字符?(ASCII 中的 SUB)
How to read substitution char with ifstream in C++ ? (SUB in ASCII)
我很难找出为什么我无法使用 fstream get 函数读取所有字符。我的代码如下:
ifstream input_stream(input_filename.c_str(), ios::in);
string input;
if(input_stream)
{
char character;
while(input_stream.get(character))
{
input += character;
}
input_stream.close();
}
else
cerr << "Error" << endl;
通过一点测试,我发现当字符 = 26(ASCII 中的 SUB)时我遇到了问题,因为 input_stream.get(26) 返回 false 并且我退出了我的 while 循环。我想在我的字符串输入中输入文件中的所有字符,包括 SUB。我一开始尝试使用getline功能,但遇到了类似的问题。你能帮我吗?
您需要读取二进制流,而不是文本流(因为 SUB 即 '0x1a'
(即 26)是 ASCII 或 UTF8 中的控制字符,而不是可打印字符)在打开时使用 ios::binary:
ifstream input_stream(input_filename.c_str(), ios::in | ios::binary);
也许你会编码
do {
int c= input_stream.get();
if (c==std::char_traits::eof()) break;
input += (char)c;
} while (!input_stream.fail());
您是否考虑过使用 std::getline 来读取整行,假设输入文件仍然组织在('n'
终止)行中?
相关文章:
- 生成随机.txt文件,10行,10列。充满随机:"*"、"#"、"@"。然后将随机字符替换为'P'
- 我想仅使用递归将字符"a"替换为字符"z"
- 将一个字符替换为字符串中更多数量的字符,而不删除C++中的其他字母
- 如何将像'A'这样的单个字符替换为类似"10"?
- Qt:文件名中的非 ASCII 字符替换为"?"
- 我无法用字符替换重复的数字"a"
- QtLineEdit 占位符:如何让用户在插入模式下将字符 1 替换为 1
- 将一个特定字符替换为正则表达式匹配中的另一个字符
- 如何将所有出现的字符替换为给定的字符串
- 将一个数组到另一个数组的字符替换为字符串
- C++ 字符串,用于删除字符'b'并将字符'a'替换为两个'd'的构建函数
- 将字符串中的所有非 ASCII 字符替换为其等效的 ASCII
- 将utf8编码的字符串转换为本地8位编码的字符串,并将无法确定的字符替换为空白
- C++-用非ascii字符替换文件中的特殊字符
- 将字符串中的 č,š,ć 等字符替换为其 html 代码C++
- 用连字符替换字符串中的文本
- 用不同字符替换单词的代码
- 将空白字符替换为 %20 的字符串,忽略所有尾随空格
- 将部分字符*替换为较小的字符*
- 将字符串中的字符替换为某个字符串