1

strtokのようなものを使わずに、これを理解するのを手伝ってもらえないかと思っていました. この割り当ては、入力を受け入れてユーザーを正しい領域に誘導するものを構築することを目的としています。みたいなものを手に入れたい……。

ヘルプコピー

そして、それを次のように保存します

array[1] = ヘルプ
array[2] = コピー。

cin>>arr[1]; のようなことをしようとしました。および cin>>arr[2] しかし同時に、ユーザーがコピーを入力した場合、それを行う方法がわかりません cin を 1 つだけ配置した場合、ユーザーがヘルプ コピーを配置した場合はどうなりますか。

基本的に、サイズの入力を受け入れて、配列内の要素として入力したものを格納する方法がわかりません。

私は cin.get や getline のようなものを試してみましたが、実際には役に立たないようで、私の cin のアイデアはまったく役に立ちませんでした。

これは私がこれまでに持っているものです。

int main()
{
    string user;

    cout<<"Hello there, what is your desired username?"<<endl;

    cin >> user;

    system("cls");

    cout<<"Hello, " << user << "! How are you doing?"<<endl<<endl;

    cout<< user << ": ";



    return 0;
}
4

2 に答える 2

2

次のように実行できます。

  • を使用して行全体を読み取りますgetline
  • その行から入力文字列ストリームを作成します
  • その文字列ストリームの内容を に読み込みますvector<string>。ユーザーが入力するのと同じ数の入力に対応するために自動的に拡張されます
  • 結果のベクトルのサイズを調べて、エンドユーザーが作成したエントリの数を確認します

コードでそれを行う方法は次のとおりです。

// Prepare the buffer for the line the user enters
string buf;
// This buffer will grow automatically to accommodate the entire line
getline(cin, buf);
// Make a string-based stream from the line entered by the user
istringstream iss(buf);
// Prepare a vector of strings to split the input
vector<string> vs;
// We could use a loop, but using an iterator is more idiomatic to C++
istream_iterator<string> iit(iss);
// back_inserter will add the items one by one to the vector vs
copy(iit, istream_iterator<string>(), back_inserter(vs));

これはideoneのデモです。

于 2013-09-18T20:12:23.423 に答える