【发布时间】:2014-02-03 05:38:12
【问题描述】:
我一直在尝试读取 C/C++ 中的文件,并且能够为 C 执行此操作,但在使用 C++ 时遇到了一些问题。
背景:我正在尝试读取的文件具有以下结构
i = %3d; j = %3d; a = %3d; b = %3d;
i = %3d; j = %3d; a = %3d; b = %3d;
...
我在C 中工作的代码如下:
#include <stdio.h>
#include <fstream>
#define MAXSIZE 32
int main()
{
FILE* inputfile = fopen("temp.txt","r");
int i,j,a,b;
while (!feof(inputfile))
{
fscanf(inputfile,
"i = %3d; "
"j = %3d; "
"a = %3d; "
"b = %3d;\n",
&i, &j, &a, &b);
printf("%3d %3d %3d %3d\n", i,j,a,b);
}
fclose(inputfile);
return 0;
}
当我尝试在C++ 中编写这个程序时,我已经尝试过:
int main()
{
ifstream inputfile( "temp.txt" ,ios::in);
int i,j,a,b;
while (!std::cin.eof())
{
inputfile >> "i = " >> i >> "; j = " >> j >> "; a = " >> a >> "; b = " >> b >> ";\n";
printf("%3d %3d %3d %3d\n", i,j,a,b);
}
return 0;
}
但我不太确定应该如何进行格式化inputfile >> "i = " >> i >> "; j = " >> j >> "; a = " >> a >> "; b = " >> b >> ";\n";
任何帮助将不胜感激。谢谢!
编辑:我面临的问题是倒数第二行的格式不正确。因为我的文件是问题中所述的格式,所以我不能写inputfile >> i >> j >> a >> b;。
【问题讨论】:
-
那么你遇到了什么问题?
-
您真的需要验证
i =、j =等是否存在,还是可以忽略它们并读取数字? -
@jayeshbhoi 嗨,我已经编辑了问题,希望能明确问题的重点。
-
@JerryCoffin,我试过
inputfile >> i >> j >> a >> b;,得到了一个无限循环,输出恒定0 -2 937351794 2007600341。我认为缺少\n意味着它没有移动到下一行。 -
@BlackAdder:那么是倒数第二行的格式吗?在不知道我们真正应该阅读的内容的情况下,很难建议如何阅读数据。
标签: c++ c input io inputstream