2016-03-22 3 views
-2
while(true) { 
    getline(myfile, a[i]); 
    if (a[i]=="")//or if(a[i].empty()) 
     break; 
    i++; 
    n = i; 
} 

getline関数は、myfileオブジェクトから空白行を取得するとき(二進数の列の間に空白行があります)、whileループで使用されます。私のコードはうまくいきますDev C++ IDEでは、しかしLinux端末ではうまくいきません。 (特に 'while'ループの部分で)

例:

101010 
000 
11 
1 
00 
       <- when getline meets this line, by "if" break; has to work. 
0011 
10 
00111 
1101 

しかし、それはその空白行を実現していません。

どうしたのですか?

getline()が空白行に達したときに中断する必要があるのは何ですか?

私はこれをPuTTYで行います。

+3

まず、このaとは何ですか?次に、「101010 000 11 1 00'」に「空白行」を見つけようとしています。それは空白をラインではありません。 – DimChtz

+0

空白を含む行が見つかったときにwhileループを停止させたいのですか? – DimChtz

+0

@DimChtzスペーシング/改行は書式設定の問題に過ぎませんでした。彼は彼のポストで改行を試みました。 – dckuehn

答えて

2

NL/CRの問題が発生している可能性があります。

代わりの

if (a[i]=="") 

使用のようなもの:

あなたはまた、ユーティリティを使用して、UNIXスタイルの行末を持つファイルにファイルを変換することができ

bool isEmptyLine(std::string const& s) 
{ 
    for (auto c : s) 
    { 
     if (!std::isspace(c)) 
     return false; 
    } 
    return true; 
} 

if (isEmptyLine(a[i])) 

dos2unixと呼ばれます。それも問題を解決するはずです。

関連する問題