2017-08-13 12 views
1

文字列に格納されたファイルから行の先頭にある空白を数えようとしています。 問題は、' 'とは異なる文字が見つかった場合、私はstd::getline()にどのように停止するかを知らないことです。あなたがstd::getline()のための区切り文字としてスペース以外の任意の文字を使用することはできませんstd :: getline()の区切り文字として任意の文字を使用します。

std::getline(file_input, string_target, 'Any_character_except_space'); 
+0

おそらく、この問題は間違っているでしょう。私が考えることができるハンマーは 'std :: regex'です。 – user0042

+0

'std :: getline'はそれをしません。あなたの基準に合った文字が見つかるまで、一度に1文字ずつ読んで、あなた自身の機能を書いてください。 –

+0

あなたは* space *を探し、 'std :: getline(f、s、 '');'が空の文字列を読み込む回数を数えることができます。 – Galik

答えて

1

、署名のどれもとても許しません。あなたは何ができるか

は、例えば次のとおりです。

std::string line; 
std::getline(file_input,line); 
auto pos = std::find_if_not(std::begin(line),std::end(line),[](char c) { 
     return std::isspace(c); 
    // or c == ' ' 
    // or whatever condition you need 
    }); 
size_t space_count = std::distance(std::begin(line),pos); 

はここfull exampleです。

+1

なぜ条件付きですか? 'pos == std :: end(line)'ならば、文字列は完全に空白になり、 'std :: distance(std :: begin(line)、pos)'は文字列の長さを返します。その場合は文字列の先頭のスペースの数。 –

+1

@Benjaminあなたが正しいと思われます。私は若干異なる論理を念頭に置いていました。 – user0042

関連する問題