从file_2获取输入

时间:2011-10-12 17:17:52

标签: c++ filestream file-io

我从行文件中获取输入...每行包含三列或更少的列... 如果文件中的行是

,一切都很好
     lda #5           

label +lda #5

但如果一行以'+'开头,如

+lda #5

该行未输入....为什么会这样?

输入代码是

ifstream in(asmfile,ios::in);
char c;
string str[3];
string subset;
long locctr=0;
int i=0;


while((c=in.get())!=EOF)
{
    in.putback(c);
    str[0]="";
    str[1]="";
    str[2]="";
    i=0;

    while((c=in.get())!='\n' && c!=EOF)
    {

        in.putback(c);
        in>>str[i++];

    }
}

2 个答案:

答案 0 :(得分:4)

我不确定你要在哪里使用你的代码,但它似乎很难构建给我,你把这个问题标记为C ++,所以我建议你使用标准的C ++习语来读取文件行按行:

#include <string>
#include <fstream>

std::ifstream infile(asmfile);
std::string line;

while (std::getline(infile, line))
{
  // process "line"
  // e.g. "lines.push_back(line);" , with "std::vector<std::string> lines;"
}

答案 1 :(得分:1)

正如所写,我相信发布的代码将读取显示为示例的行。事实上,我刚刚运行它,它也读取了你指示的行不起作用(并且它只读取两个“单词”,因为>>运算符在这种情况下将使用空格作为分隔符字符串。

失败的一个可能原因是+lda #5行之前的行有多于三个单词(由空格分隔)。这会导致未定义的行为(很可能是访问冲突),因为str数组只有三个元素,并且没有检查行上有三个以上单词的情况。