0

我正在尝试读取文件并使用行上的第一个整数作为变量 s
我的函数可以读取文件并写入另一个文件,但它不会将第一个数字存储为变量

void process_file(ifstream& in, ofstream& out)
{
 string i,o;
char tmp;
int s;
prompt_user(i,o);
in.open (i.c_str());
if (in.fail())
{
    cout << "Error opening " << i << endl;
    exit(1);
}
    out.open(o.c_str());

while(tmp !='\n')
{
    in.get(tmp);
    s=tmp;
}
cout << tmp;
in.get(tmp);

while (tmp !='\n')
{
    out.put(tmp);
    in.get(tmp);
}
in.close();
out.close();


}  

这是我在读取看起来像这样的文件时得到的结果..

4 姓 1 姓 1 姓 2 姓 2 姓 3 姓 3 .....

输入包含销售人员姓名和若干周的每日销售额的文件名。somedat.dat 输入存储总销售额和平均销售额摘要的文件的名称。od.dat

10(第一个的姓氏和名字正确地输出到另一个文件中,正如预期的那样,10应该是4..)

4

1 回答 1

0

我假设您想要的是获取输入文件中的第一行,这是一个数字,并将其存储在s. 您可以使用stringstreamandgetline来执行此操作:

void process_file(ifstream& in, ofstream& out)
{
 string i,o;
char tmp;
int s;
prompt_user(i,o);
in.open (i.c_str());
if (in.fail())
{
    cout << "Error opening " << i << endl;
    exit(1);
}
    out.open(o.c_str());


//assuming the number is on a separate line by itself
string line;
getline(in, line);
stringstream linestream(line);
linestream >> s;

//while you can read from the input, write what you read directly to the output
while(getline(in, line))
  out << line;

in.close();
out.close();
于 2013-04-02T07:15:28.217 回答