1

I am able to input string using the following code:

string str;
getline(cin, str);

But I want to know how to put an upper limit on the number of words that can be given as input.

4

6 回答 6

1

你不能用 justgetline或 even来做你所要求的read。如果你想限制单词的数量,你可以使用一个简单的for循环和流 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

getline()阅读字符并且不知道单词是什么。一个词的定义可能会随着上下文和语言而改变。您需要一次读取一个字符,提取与您对单词的定义相匹配的单词,并在达到限制时停止。

于 2013-08-03T15:58:49.717 回答
0

您可以一次读取一个字符,也可以只处理字符串中的 1000 个字符。

您可以对 std::string 设置限制并使用它。

于 2013-08-03T15:59:02.623 回答
0

希望这个程序可以帮助你。此代码也处理单行中多个单词的输入

#include<iostream>
#include<string>
using namespace std;
int main()
{
    const int LIMIT = 5;
    int counter = 0;
    string line;
    string words[LIMIT];
    bool flag = false;
    char* word;
    do
    {
        cout<<"enter a word or a line";
        getline(cin,line);
        word = strtok(const_cast<char*>(line.c_str())," ");
        while(word)
        {
            if(LIMIT == counter)
            {
                cout<<"Limit reached";
                flag = true;
                break;
            }
            words[counter] = word;
            word = strtok(NULL," ");
            counter++;
        }
        if(flag)
        {
            break;
        }
    }while(counter>0);
    getchar();
}

截至目前,该程序仅限于接受 5 个单词并将其放入字符串数组中。

于 2013-08-03T16:12:42.217 回答
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

您可以指定第三个参数来限制读取字符的数量。

于 2013-08-03T16:01:54.163 回答