2012-03-02 6 views
0

に私はistringstreamを使用するときに私の変数でありますどのように多くの文字列を知りたいどのように多くの文字列を検索"1 2 3 4"、私はistringstreamを使用するとき、私は方法を知りたいです多くの文字列はss(この場合は4)です。istringstream

+0

まあ、 'stringstream'は' vector'ない間に追加します。istream_iteratorstd::distanceはあなたのためにそれを行うことができます... –

+1

どの文字を文字列を終了するとみなしますか?スペースのみですか? – perreal

+0

私は数字の間のスペースを数えたくないので、私はistringstreamを使用します。 – EricJ

答えて

2

私が知っている唯一の方法は、見るために文字列を解析することです。 、

std::distance(std::istream_iterator<string>(ss), 
       std::istream_iterator<string>()); 
+0

その後、彼はストリームを読み、それを再度読み込んで再読み込みする必要があります。 –

+0

@JamesKanze:もちろん、ストリングストリームで行うのはかなり簡単です。明らかな選択肢は、データをベクトルに読み込んだ後、ベクトルのサイズを見つけることです。 –

1
#include <iostream> 
#include <sstream> 
#include <algorithm> 
#include <ctype.h> 

int main() 
{ 
    std::string str = ss.str(); 

    // int c = (int) std::count_if (str.begin(), str.end(), isspace) + 1; 
    int c = 1; // 0 
    for (unsigned int i = 0; i <str.size(); i++) 
    if (isspace(str[i])) 
     c++; 
    std::cout << c; 
    return 1; 
} 
+0

それはうまくいきませんでした。コンパイラはcount_ifを知らない – EricJ

+0

名前は 'std :: count_if'です。 –

+0

もちろん、フィールド数については何も教えてくれません。 –

0

あなたが好きな何かを行うことができますループ

while(ss>>cadena) {

関連する問題