我试着这样做
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char b[2];
ifstream f("prad.txt");
f>>b ;
cout <<b;
return 0;
}
它应该读取2个字符,但它读取整行。这适用于另一种语言但由于某种原因在C ++中不起作用。
答案 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。
中存储的内容的末尾