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

时间:2012-03-01 15:11:54

标签: c++ string file char

我试着这样做

 #include <iostream>
 #include <fstream>

using namespace std;

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

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

3 个答案:

答案 0 :(得分:9)

您可以使用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.

答案 1 :(得分:2)

  

这适用于另一种语言,但对某些人来说无法在C ++中使用   原因。

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

答案 2 :(得分:0)

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

从流中提取字符并将其存储为c字符串   数组从s开始。提取字符直到(n -   1)已提取字符或分隔字符'\ n'   找到。如果在文件末尾到达,则提取也会停止   输入序列或输入操作期间发生错误。如果   找到分隔字符,它不是从输入中提取的   序列并保留为要提取的下一个字符。使用   getline如果你想要提取(并丢弃)这个字符。   信号结束c字符串的结束空字符是   自动附加在s。

中存储的内容的末尾