C++のifstreamのマイナスサイン
Posted: 2009年2月15日(日) 16:12
はじめまして。
C++のfstreamについて質問させて下さい。
学校の宿題で以下のように記されたファイルを読まないといけなく、困っています。
コードは以下です。
わかる方教えてくださるとありがたいです。
また、もしこの方法で駄目だとしたら、どのような方法でファイルを読み取ればいいでしょうか…?
よろしくお願い致します(_ _)
C++のfstreamについて質問させて下さい。
学校の宿題で以下のように記されたファイルを読まないといけなく、困っています。
(2.00) (2.56 + 8.33i) (3.40i) (9.66 - 2.34i)この形式で書かれたファイルをfstreamで読み取り、実数と虚数をそれぞれ変数の中に読み込みたいのですが、うまくいきません…。マイナスサイン、ASCIIの45番を、ifstreamが読み取らないのです。
コードは以下です。
istream& operator>>(ifstream& in, ComplexNum& obj)
{
char ignore = ' ';
char tempNumC[6];
double tempNum = 0.0;
double realNum = 0.0;
double imgNum = 0.0;
while(!in.fail() && in.peek() != ')')
{
while((in.peek() == ')' || in.peek() == '(') || (in.peek() == '-' || in.peek() == '+'))
in.get(ignore);
if(ignore == '-')
{
in >> tempNum;
if(!in)
{
in.clear();
in.get(tempNumC, 6, 'i');
tempNum = atof(tempNumC);
ignore = 'i';
}
tempNum = tempNum * -1;
}
else
{
in >> tempNum;
if(!in)
{
in.clear();
in.get(tempNumC, 6, 'i');
tempNum = atof(tempNumC);
ignore = 'i';
}
}
if(ignore == 'i')
{
imgNum = tempNum;
break;
}
else
realNum = tempNum;
tempNum = 0.0;
}
obj.setter(realNum, imgNum);
in.clear();
in.ignore(100, '\n');
return in;
}
どうしてなのでしょうか…?わかる方教えてくださるとありがたいです。
また、もしこの方法で駄目だとしたら、どのような方法でファイルを読み取ればいいでしょうか…?
よろしくお願い致します(_ _)