新しいIDの推奨


https://programmers.co.kr/learn/courses/30/lessons/72410
#include <string>
#include <vector>

using namespace std;

string solution(string new_id)
{
	//단계 1 : 모든 대문자를대응되는 소문자로 치환한다.
	for (int i = 0; i < new_id.size(); i++)
	{
		if (new_id[i] >= 'A' && new_id[i] <= 'Z')
		{
			new_id[i] = tolower(new_id[i]);
		}
	}

	//단계 2 : 알파벳 소문자, 숫자, 빼기, 밑줄 마침표 제외한 모든 문자 제거
	for (int i = 0; i < new_id.size(); )
	{
		if ((new_id[i] >= 'a' && new_id[i] <= 'z') || (new_id[i] >= '0' && new_id[i] <= '9') || new_id[i] == '-' || new_id[i] == '_' || new_id[i] == '.')
		{
			i++;
			continue;
		}//나머지 문자들은 제외합니다.

		new_id.erase(new_id.begin() + i);//지워지고 알아서 압축된다.
	}

	//단계 3 :  . 이 2 번이상 나타나는 부분들은 .으로 치환합니다.
	char cTemp = '.';
	for (int i = 1; i < new_id.size(); )
	{
		if ((new_id[i] == cTemp) && (new_id[i - 1] == cTemp))
		{
			new_id.erase(new_id.begin() + i);
			continue;
		}
		i++;
	}

	//단계 4 : new_id 에서 마침표가 처음이나 끝에 위치한다면 제거한다.
	if (new_id.front() == '.')								new_id.erase(new_id.begin());
	if (new_id.back() == '.')							new_id.erase(new_id.end() - 1); //마지막에서 -1해준 위치이다.

	//단계 5 : 빈 문자열이라면 , "a"대입합니다.

	if (new_id.size() == 0)					new_id = "a";

	//단계 6 : 16자 이상이라면, 15개 문자 제외한 나머지 모두 제외한다. 이후 마침표가 new_id의 끄텡 위치한다면 마지막 마침표 문자 제거합니다.
	if (new_id.size() >= 16)
	{
		new_id.erase(new_id.begin() + 15, new_id.end());

		if (new_id.back() == '.')
		{
			new_id.erase(new_id.begin() + 14);
		}
	}


	// 단계 7 : 길이가 2자리 이하라면, new_id 마지막문자를 3이 될때까지 반복해서 끝에 붙인다.
	char cTemp1 = new_id[new_id.size() - 1];

	if (new_id.size() <= 2)
	{
		while (new_id.size() != 3)
		{
			new_id += cTemp1;
		}
	}

	return new_id;
}
トピックによく表示される文字列タイプ.
1.大文字
if (new_id[i] >= 'A' && new_id[i] <= 'Z')
2.小文字処理
if (new_id[i] >= 'a' && new_id[i] <= 'z')
3.文字列の削除
//手順3:.この2回以上出てきた部分.を選択します.
	char cTemp = '.';
	for (int i = 1; i < new_id.size(); )
	{
		if ((new_id[i] == cTemp) && (new_id[i - 1] == cTemp))
		{
			new_id.erase(new_id.begin() + i);
			continue;
		}
		i++;
	}
4.front/back/begin/endの使用
if (new_id.front() == '.')::アドレス値ではありません.実績値
if (new_id.back() == '.')
new_id.begin();::アドレス値.
new_id.end();::アドレス値.
文字列全体の問題の処理