C ++で不特定数の複数行を入力することを考える

while(cin >> / *?* /)ステートメントを使用して不特定数の複数行を入力するのは不便です。Ctrl-Zを入力すると、入力が終了します。入力できる情報セットは1つだけで、後続のセットは入力できません。 。
インターネットでさまざまな方法を検索したところ、以下の方法がより効果的であることがわかりました。(改善後、ベクターに格納されます(インターネット上の配列にもメソッドがあります))次に
mainおよびheaderの処理メソッドを示します

主に

例としてC ++ Primer Exercise 3.36(b)(つまり、ベクトルを比較する)を取り上げます。

#include <iostream>
#include <vector>
#include <string>
#include <sstream> // std::istringstream
using namespace std;

int main()
{
    
    
	vector<int> vint1, vint2;
	string num1, num2;
	cout << " First vector:";
	getline(cin, num1);
	istringstream is1(num1);
	int i;
	while (is1 >> i)
		vint1.push_back(i);
	cout << "Second vector:";
	getline(cin, num2);
	istringstream is2(num2);
	int j;
	while (is2 >> j)
		vint2.push_back(j);
	if (vint1.size() != vint2.size())
		cout << "vint1 is unequal to vint2" << endl;
	else
	{
    
    
		int s=0;
		auto it1 = vint1.begin();
		auto it2 = vint2.begin();
		for (int k = 0; k != vint1.size(); k++)
		{
    
    
			if (*it1 == *it2) s++;
			++it1;
			++it2;
		}
		if (s == vint1.size())
			cout << "vint1 is equal to vint2" << endl;
		else cout << "vint1 is unequal to vint2" << endl;
	}
	return 0;
}

重要な部分(L12-16)は

	getline(cin, num1);
	istringstream is1(num1);
	int i;
	while (is1 >> i)
		vint1.push_back(i);

isringstream関数を実現するには、ライブラリsstreamが必要ですもちろん、whileステートメントを使用してベクターに継続的に格納する必要があります。それ以外の場合、getlineの後に取得された文字列コンテンツの最初の番号のみが保存されます。

ヘッダーに

以下は、関数を整数cinvec_intの行ベクトルに定義し、浮動小数点数をcinvec_doubleの行ベクトルに定義します。

#ifndef CINVEC
#define CINVEC
#include <iostream>
#include <vector>
#include <string>
#include <sstream> // std::istringstream

std::vector<int> cinvec_int(std::string cin_int)
{
    
    
	getline(std::cin, cin_int);
	std::vector<int> vint;
	std::istringstream is(cin_int);
	int i;
	while (is >> i)
		vint.push_back(i);
	return vint;
}

std::vector<double> cinvec_double(std::string cin_double)
{
    
    
	getline(std::cin, cin_double);
	std::vector<double> vdou;
	std::istringstream is(cin_double);
	double i;
	while (is >> i)
		vdou.push_back(i);
	return vdou;
}
#endif // !CINVEC

こちらもご覧ください

テディヴァンジェリーのナビゲーションページ
[C ++入門(第5版)演習]演習プログラム-第3章(第3章)
[C ++入門(第5版)演習]エクササイズプログラム-第5章(第5章)

おすすめ

転載: blog.csdn.net/weixin_50012998/article/details/108169209
おすすめ