如何从文本文件中读取特定数量的字符

问题描述 投票:0回答:3

我尝试这样做:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    char b[2];
    ifstream f("prad.txt");
    f >> b;
    cout << b;
    return 0;
}

它应该读取 2 个字符,但它读取整行。这适用于另一种语言,但由于某种原因不适用于 C++。

c++ string file char
3个回答
11
投票

您可以使用

read()
指定要读取的字符数:

char b[3] = "";
ifstream f("prad.txt");

f.read(b, sizeof(b) - 1); // Read one less that sizeof(b) to ensure null
cout << b;                // terminated for use with cout.

2
投票

这适用于另一种语言,但不适用于某些 C++ 原因。

有些事情会因语言而异。特别是,在这种情况下,您遇到了这样一个事实:在 C++ 中,指针和数组几乎没有什么不同。该数组作为指向 char 的指针传递给运算符>>,该指针被解释为字符串指针,因此它执行与 char 缓冲区相同的操作(即读取直到宽度限制或行尾,以先到者为准)。当这种情况发生时,你的程序应该会崩溃,因为你的缓冲区溢出了。


0
投票
istream& get (char* s, streamsize n );

从流中提取字符并将它们作为 c 字符串存储到 从 s 开始的数组。字符被提取直到 (n - 1) 已提取字符或分隔符 ' ' 是 成立。如果到达文件末尾,提取也会停止 输入顺序或输入操作期间发生错误。如果 找到了分隔字符,但未从输入中提取它 序列并保留为下一个要提取的字符。使用 getline 如果您希望提取(并丢弃)该字符。 表示 c 字符串结束的结束空字符是 自动附加在 s 中存储的内容的末尾。

© www.soinside.com 2019 - 2025. All rights reserved.