1

トリックは、文字列のサイズがまだわからないことです。ユーザーに単語を尋ねることができる必要があり、この単語はベクトルに格納されます。

int main()
{

    vector<char> word (80);

    // get the word from user
    for(int i=0 ; getchar() != '\n' ; i++)
        {
            cin >> word[i];
        }
    // print the word from user
    for(int i=0 ; i<=word.size() ; i++)
        {
            cout << word[i] << endl;
        }


    return 0;
}

編集:キーボードから入力された単語、任意の単語、文字列などをキャプチャしたいだけです。例:ベクトルに「明白な」という単語を追加して、後で操作できるようにしたいとしましょう。ベクトル。「obvious」と入力して Enter キーを押すと、「obvious」という単語を含むサイズ 7 のベクトルが得られます。

4

2 に答える 2

2
std::string str;

// I'm confused about whether you want a line, or a word.
// this gets a line
std::getline(std::cin, str);

// this gets a word
// std::cin >> str;

vector<char> word(str.begin(), str.end());
于 2012-11-25T17:08:57.917 に答える
0

この質問は頻繁に聞かれ、答えられたと思います。明らかなアプローチは

std::vector<char> word{std::istreambuf_iterator<char>(std::cin),
                       std::istreambuf_iterator<char>()};

... または C++ 2003 でコンパイルされた同等のバージョンですが、Most Vexing Parse を回避するように微調整されています。

部分的な入力、たとえば行だけを読みたい場合は、少し調整する必要があります。

for (std::istreambuf_iterator<char> it(std::cin), end;
     it != end && *it != '\n'; ++it)
{
    word.push_back(*it);
}
++it;

どちらの場合もstd::vector<char>、必要なサイズに成長させることが重要です。

于 2012-11-25T17:10:37.670 に答える