1

ユーザーがコンソールに貼り付けた行を読み取る方法が必要です。ユーザーは次の方法で貼り付けます。

1 行目: n - この行以外の行数

2 - n 番目: 文字列オブジェクト

cin で読み取ると、最初の行が読み取られ、プログラムが終了し、次の行がコンソール入力に配置されます。scanf を使用すると、同様の結果が得られます。

string s[100];

int N = 0;
scanf("%i", N);

for (int i = 0; i < N; i++)
{
scanf("%s", s);
}
4

2 に答える 2

3

std::vector<std::string>aと を使用std::getlineして行を抽出した方がよいでしょう。

std::vector<std::string> lines;
std::string line;

while (std::getline(std::cin >> std::ws, line))
{
    if (!line.empty())
        lines.push_back(line);
}
于 2013-11-09T19:25:45.480 に答える
0

getline() はあなたのためにトリックを行います。これを試して:

string lines[100];

int number = 0;
cin >> number;

for (int idx = 0; idx != number; ++idx)
{
    getline(cin, lines[idx]);
}

この方法では 100 行を超える読み取りはできないことに注意してください。サイズ n の行の配列を動的に割り当てたい場合は、new 演算子を使用できます。

于 2013-11-09T19:24:06.550 に答える