C ++:文字列を入力する方法の詳細な説明


C ++で文字列を入力する一般的な方法は次のとおりです。

cin、cin.get()、cin.getline()、getline()、gets()、getchar()

シン>>

  1. 数字を入力してください
#include <iostream>
using namespace std;

int main()	
{
	int a, b;
	cin >> a >> b;	//输入:2[回车]3[回车]
	cout << "a + b = " << a + b << endl;//输出:a + b = 5

	return 0;
}
  1. 文字列を受け取り、「スペース」、「タブ」、「キャリッジリターン」に遭遇すると終了します
#include <iostream>
using namespace std;

int main()	
{
	char arr[20];
	cin >> arr;
	cout << "arr: " << arr << endl;
	//输入:jkljkl jkljkl 
	//遇空格结束,所以不能输入多个单词
	//输出:jkljkl
	return 0;
}

cin.get()

  1. cin.get(文字変数名)を使用して文字受け取ることができます
#include <iostream>
using namespace std;

int main()	
{
	char ch;
	ch = cin.get();
	//cin.get(ch);
	cout << "ch = " << ch << endl;

	return 0;
}

//输入:jljkljkl
//输出:j
  1. cin.get(文字配列名、受信した文字の数)は、文字列の行を受信するために使用でき、スペースを受信でき、自動的に '\ 0'を受信します
#include <iostream>
using namespace std;

int main()	
{
	char str[20] = { 0 };
	cin.get(str, 20);	//类似于 getline
	cout << "str: " << str << endl;

	return 0;
}
//输入:jkl jkl jkl
//输出:jkl jkl jkl

//输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
//输出:abcdeabcdeabcdeabcd (接收19个字符 + 1个'\0')
  1. cin.get(パラメーターなし)を使用して、入力ストリーム内の不要な文字を破棄するか、またはキャリッジリターンを破棄してcin.get(文字配列名、受信文字数)の欠点を補います。
#include <iostream>
using namespace std;

int main()
{
	char str[10] = { 0 };
	cin.get(str, 10);
	cin.get();	//用于吃掉回车,相当于 getchar()
	cout << "str: " << str << endl;

	cin.get(str, 5);
	cout << "str: " << str << endl;

	return 0;
}

//assbdakss
//str: assbdakss
//sdadadsa
//str: sdad

int main()	
{
	char str[20] = { 0 };
	cin.get(str, 20);
	//cin.get();	//用于吃掉回车,相当于 getchar()
	cout << "str: " << str << endl;

	cin.get(str, 5);
	cout << "str: " << str << endl;

	return 0;
}

//hasdjaksasdhaksd
//str: hasdjaksa
//str: sdha

cin.getline()

  1. 文字列を受け取り、スペースと出力を受け取り、自動的に '\ 0'を受け取ります
#include <iostream>
using namespace std;

int main()	
{
	char arr[20] = { 0 };
	cin.getline(arr, 5);
	cout << "arr: "  << arr << endl;

	return 0;
}

//输入:jkljkljkl
//输出:jklj
//接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;

  1. cin.getline()には、実際には3つのパラメーター、cin.getline(受信文字列、受信番号、終了文字)
    があります。3番目のパラメーターがデフォルトの場合、システムのデフォルトは '\ n'です。
#include <iostream>
using namespace std;

int main()	
{
	char arr[10] = { 0 };
	cin.getline(arr, 5, 's');
	cout << "arr: " << arr << endl;

	return 0;
}

//当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk
  1. 多次元配列で使用する場合は、cin.getline(arr [i]、10)も使用できます。
#include <iostream>
using namespace std;

int main()	
{
	char arr[3][20] = { 0 };
	for (int i = 0; i < 3; i++)
	{
		cout << "请输入第"<< i + 1 <<"个字符串: " << endl;
		cin.getline(arr[i], 20);
	}
	cout << endl;
	for (int i = 0; i < 3; i++)
	{
		cout << "输出 arr[" << i << "] 的值: " << arr[i] << endl;
	}

	return 0;
}

请输入第1个字符串:
kskr1
请输入第2个字符串:
kskr2
请输入第3个字符串:
kskr3
​
输出m[0]的值:kskr1
输出m[1]的值:kskr2
输出m[2]的值:kskr3

getline()

文字列を受信すると、スペースを受信し、ヘッダーファイルを含めて出力できます。 #include <string>

#include <iostream>
using namespace std;

int main()	
{
	string str;
	getline(cin, str);
	cout << "str = " << str << endl;

	return 0;
}

与 cin.getline() 类似,但是 cin.getline() 属于 iostream 流,而 getline() 属于 string 流,是不一样的两个函数

取得()

gets()は文字列を受け取り、スペースと出力を受け取ることができ、含める必要があります #include <string>

#include <iostream>
#include <string>
using namespace std;

int main()	
{
	char arr[20] = { 0 };
 	gets(arr);		//不能写成 arr = gets()
	cout << arr << endl;

	return 0;
}

しかしながら、上記のコードは、Iを加え、VSにコンパイルすることができない#include <cstdio>か、#include <stdio.h>最初の静止ファイル()関数を取得し、後で変更.cファイルのテストコードは以下の通りである認識しない後。

#include <stdio.h>

int main()	
{
	char arr[20] = { 0 };
	gets(arr);		//不能写成 arr = gets()
	printf("arr = %s\n", arr);

	return 0;
}

getchar()

を含むキャラクターを受け取る #include <string>

#include <iostream>
#include <string>
using namespace std;

int main()	
{
	char ch;
	ch = getchar();	//不能写成 getchar(ch)
	cout << "ch = " << ch << endl;

	return 0;
}

输入:jkljkljkl
输出:j
​
//getchar()是C语言的函数,C++也可以兼容,但是尽量不用或少用;
元の記事を152件公開 賞賛されている45件 10,000回以上の閲覧

おすすめ

転載: blog.csdn.net/AngelDg/article/details/105042844