1

次のコードを使用して文字列を入力できます。

string str;
getline(cin, str);

しかし、入力として与えられる単語数に上限を設ける方法を知りたいです。

4

6 に答える 6

1

getlinejustまたは even で求めていることを行うことはできませんread。単語数を制限したい場合は、単純なforループと stream in 演算子を使用できます。

#include <vector>
#include <string>

int main()
{
    std::string word;
    std::vector<std::string> words;

    for (size_t count = 0;  count < 1000 && std::cin >> word; ++count)
        words.push_back(word);
}

これにより、最大 1000 語が読み取られ、ベクトルに詰め込まれます。

于 2013-08-03T16:01:00.750 に答える
0

一度に 1 文字を読み取ることも、文字列から 1000 文字のみを処理することもできます。

std::string に制限を設定して使用できる場合があります。

于 2013-08-03T15:59:02.623 に答える
0

count以下は、ベクトル内のスペースで区切られた単語のみを読み取り、他の単語を破棄します。

ここでは、句読点も「単語」がスペースで区切られているため、ベクトルから削除する必要があります。

std::vector<std::string> v;
int count=1000;
std::copy_if(std::istream_iterator<std::string>(std::cin), 
             // can use a ifstream here to read from file
             std::istream_iterator<std::string>(),
             std::back_inserter(v),
             [&](const std::string & s){return --count >= 0;}
            );
于 2013-08-03T16:29:09.173 に答える
-2

次の関数を使用します。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684961%28v=vs.85%29.aspx

3 番目の引数を指定して、読み取られる文字の量を制限できます。

于 2013-08-03T16:01:54.163 に答える