C++14에서 생겨난 구분자

 

보통 자리수가 많아지면 보기가 힘들어져서 우리는 , 로 구분한다.

ex) 10,000 원 // 10,000,000원 ....

 

이는 변수에 값을 넣을때도 마찬가지다.

//한눈에 보기 어려움
int a = 100000000;

그래서 작은따옴표로 구분을 할 수 있게 해주었다.

//보다 쉬움
int a = 100'000'000;

//위치는 어느 곳에 넣던지 상관없다.
int b = 1'000'0'000'0;
int c = 1'000000'00;

//모두 같은 값
a = b = c

//소수도 가능하다.
double d = 10'00.324;

 

숫자형 상수를 좀 더 가독성 있게 사용 할 수 있겠다.

 

 

https://mypark.tistory.com/entry/C14-%EC%88%AB%EC%9E%90-%EA%B5%AC%EB%B6%84%EC%9E%90Digit-separators

 

C++14 : 숫자 구분자(Digit separators)

C++14에서 작은따옴표 문자(')는 정수 리터럴과 부동 소수점 리터럴 모두 숫자 리터럴에서 숫자 구분 기호로 임의로 사용할 수 있다. 이것은 코드를 보는 사람들이 큰 숫자를 더 쉽게 알아차릴 수

mypark.tistory.com

'C++ > 유용한 것들' 카테고리의 다른 글

서식문자  (0) 2022.06.06
문자열 다루기  (0) 2022.06.05
Cout에서 소수점 자리 고정하기  (0) 2022.06.04

서식문자

%hhu			//unsigend char
%hhi,%hhd		//sigend char

%hu				//unsigend short
%hi,%hd			//sigend short

%d				//signed int
%ld				//long Int
%lld			//long long Int
%u				//unsigned int

%f				//float
%lf				//double

%c				//character
%s				//character array (string)

%o				//octal (8진수)
%x				//hexadecimal (16진수 알파벳은 소문자)
%X				//hexadecimal (16진수 알파벳은 대문자)

%				//% (\%로 출력이 되지 않고 %%로 출력이 된다)
\u250C		 //Unicode 250C

Printf

printf("%2d", value); //출력하는 자리수를 지정
printf("%02d", value); //자리수를 설정하고 자리수의 빈칸을 0으로 출력

printf("%.11lf", value); //소수점 이하 11자리까지 출력된다.

Scanf

//사용자 설정 형식을 입력 받는 경우
//Scanf는 지정한 형식에 따라 입력을 받는 함수이기에
//이 형식또한 우리가 설정할수있다, 오직 서식문자만이 아닌 밑처럼 형식을 변형해서 받을 수 있다.
scanf("%d:%d", &h, &m);
/*input*/			/*input*/			/*input*/			/*input*/
//12:243			//12 :243			//12:  243			//12,243

/*output*/			/*output*/			/*output*/			/*output*/
//a = 12, b = 243	//a = 12, b = error//a = 12, b = 243	//a = 12, b = error
//////////////////////////////////////////////////////////////////////
//숫자 한자리만 입력받는 경우
scanf("%1d", &a);
/*input*/
//12344432

/*output*/
//a = 1
//////////////////////////////////////////////////////////////////////
//공백문자를 패스하고 입력받는 경우
scanf(" %d %d", &a, &b);
/*input*/
//       23   123

/*output*/
//a = 23, b = 123

 


 

 

More Input and Output | Introduction to C

More on the standard input and output library

intro2c.sdds.ca

 

'C++ > 유용한 것들' 카테고리의 다른 글

숫자 구분자  (0) 2022.07.27
문자열 다루기  (0) 2022.06.05
Cout에서 소수점 자리 고정하기  (0) 2022.06.04

개 등신같이 항상 문자열 다룰 때마다 까먹어서 하나씩 추가하면서 정리해야겠다


STRING

  • string to Int
int a = stoi(str);
int b = stoi("3");

 

  • 특정 문자 기준으로 자르기 (string tokenizer)
//////////////////////////////////////////////////////////////////////
//1. 이 방법은 구분기준이 문장이 될수 없고 문자만 가능!
#include <sstream>

string result = "";
stringstream ss("Hi Hello!! My Name");
string token = "";
const char delimiter = '!';

while (getline(ss, token, delimiter))
{
	cout << token << endl;
}

//////////////////////////////////////////////////////////////////////
//2.구분기준이 문장이 가능
string line = "Hi Hello ※※ My ※※ Name";
string delimiter = "※※";
int pos = 0;

//★ pos = line.find(delimiter)는 연산 순서 때문에 무조건 괄호로 감싸줘야한다! ★
while ( (pos = line.find(delimiter)) != string::npos)
{
	cout<<line.substr(0, pos)<<endl;
	line.erase(0, pos + delimiter.length());
}

//substr 처음 인덱스부터 끝 인덱스를 지정해주면 그만큼 문자열에서 가져온다.
//erase 지정 인덱스부터 지정 길이만큼 문자 삭제

 

  • 문자가 숫자인지 아닌지 판별
#include <cctype>

//isdigit(char)의 반환 값이 0이면 문자이고 아니면 숫자임
//문자 하나하나씩 판별해가는방식
string str = "1233BVBBA";

for (int i = 0; i < str.length(); ++i)
{
	if (isdigit(str[i]) == 0) cout << "문자임";
	else cout << "숫자임";
}

 

  • 문자열에서 문자열 검색하기 [ string::find( ) ]
더보기
int main() 
{
	string s, y;
	getline(cin, s); getline(cin, y); 
	
	while (pos != string::npos)
	{
		pos = s.find(y, pos + y.size());
	}
}

내가 가장 많이 쓰는 오버로딩 형식이다.

size_type find ( const string & str, size_type pos = 0 ) const;

 

호출된 문자열 객체의 pos번째 인덱스부터

str찾기 시작하며 찾은 첫 인덱스를 반환한다.

  • 문자열의 일부구간을 반환하기 [ string::substr( ) ]
더보기
#include <string>
using namespace std;

int main()
{
	string str = "ABCDEF";
    str.substr(3); 		//"DEF"
    str.substr(2, 2); 	//"CD"
    str.substr(2, 99); 	//"CDEF"
    str.substr(99, 2); 	// Error std::out_of_range
	return 0;
}

string substr (size_t pos = 0, size_t len = npos) const;

문자열의 pos번째 문자부터  len 길이 만큼의 문자열을 리턴한다.

len이 npos라면 알아서 문자열의 끝까지 적용시켜주고

반면에 pos는 유효한 인덱스가 아니면 에러를 일으키기에 주의할 것


https://plein-de-verite.tistory.com/339

 

[C++] 문자열 파싱하기 (토큰화하기)

Tokenizing a string in C++ string을 Tokenizing한다는 것은 delimiter를 기준으로 string을 split하는 것과 동일한 의미를 갖는다. string을 tokenize하는 여러 가지 방법을 알아보자! stringstream 클래스와 ge..

plein-de-verite.tistory.com

'C++ > 유용한 것들' 카테고리의 다른 글

숫자 구분자  (0) 2022.07.27
서식문자  (0) 2022.06.06
Cout에서 소수점 자리 고정하기  (0) 2022.06.04
//자리수를 6자리 넘어가는것은 6자리 까지 맞춰준다는 뜻
cout.precision(6);

cout << 12344325534; //12344325534 출력 - 소수점이 들어가지 않으면 효과가 없다.

cout << 12344325534.0f //1.23443e+9 출력 - 소수점이 들어가는 순간 지수로 표현하여 자리수를 맞춤
cout << 1234.0f //1234.0 출력 - 자리수 미만이라면 그대로 출력

//지정했던 precision을 소숫점에서 사용한다는 뜻 (바로 이전에 사용했던 precision으로 설정됨
cout << fixed;

cout << 3334.221f; //3334.220947 출력 - 소숫점이 6자리로 고정 됨

 

'C++ > 유용한 것들' 카테고리의 다른 글

숫자 구분자  (0) 2022.07.27
서식문자  (0) 2022.06.06
문자열 다루기  (0) 2022.06.05

+ Recent posts