我是编程新手,我有这个问题。我有这个文件,我正在打开
ifstream fin;
FILE * pFile;
pFile = fopen (fname,"r");
该文件每行有3个数据。第一个是整数,第二个是字母表,第三个是地址(如计算机存储器地址)。如何逐行提取这些我可以处理的变量,然后用下一行重复它。
答案 0 :(得分:0)
您应该知道有一些首选的C ++方法可以通过C stdio方法处理文件:
std::ofstream
表示输出,std::ifstream
表示输入。operator<<()
,operator>>()
,read()
和write()
。此特定情况需要的是输入流功能以及格式化输入。格式化的输入将通过operator>>()
完成。
但在此之前,您必须实例化文件流。由于您正在使用输入,因此将使用std::ifstream
:
std::ifstream in("your/path.txt");
接下来要做的是创建三个变量,将其提取到流中的值。由于您事先知道了类型,因此您需要的类型分别是整数,字符和字符串:
int num;
char letter;
std::string address;
接下来要做的是使用operator>>()
从流中获取第一个有效值。它的工作方式是该函数分析右侧操作数的类型,并确定从文件流中提取的字符是否将在解析后创建有效值。当流遇到空格,新行字符或EOF(文件结尾)字符(或与操作数类型不匹配的字符)时,提取将停止。
IOStream的强大之处在于它允许链接表达式。所以你能够做到这一点:
in >> num >> letter >> address;
相当于:
in >> num;
in >> letter;
in >> address;
这就是这个简单案例所需的全部内容。在更复杂的情况下,成功提取可能需要循环和内存中的I / O.