<string>
함수
getline
stod
stof
stoi
stol
stold
stoll
stoul
stoull
swap
to_string
to_wstring
getline
입력 스트림에서 문자열을 한 줄씩 추출합니다.
// (1) delimiter as parameter
template <class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& in_stream,
basic_string<CharType, Traits, Allocator>& str,
CharType delimiter);
template <class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>&& in_stream,
basic_string<CharType, Traits, Allocator>& str,
const CharType delimiter);
// (2) default delimiter used
template <class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& in_stream,
basic_string<CharType, Traits, Allocator>& str);
template <class Allocator, class Traits, class Allocator>
basic_istream<Allocator, Traits>& getline(
basic_istream<Allocator, Traits>&& in_stream,
basic_string<Allocator, Traits, Allocator>& str);
매개 변수
in_stream
문자열을 추출할 입력 스트림입니다.
str
입력 스트림에서 문자를 읽어들일 문자열입니다.
delimiter
줄 구분 기호입니다.
Return Value
입력 스트림 in_stream
입니다.
설명
(1)
로 표시된 함수 시그니처 쌍은 in_stream
이 발견될 때까지 delimiter
에서 문자를 추출하여 str
에 저장합니다.
표시된 (2)
함수 서명 쌍은 줄 바꿈을 기본 줄 구분 기호로 사용하고 다음과 같이 getline(in_stream, str, in_stream. widen('\n'))
동작합니다.
각 쌍의 두 번째 함수는 참조를 지원하는 rvalue
첫 번째 함수와 유사합니다.
다음 중 하나가 발생하면 추출이 중지됩니다.
파일의 끝에서 내부 상태 플래그
in_stream
가 .로 설정ios_base::eofbit
됩니다.함수가 같
delimiter
음과 비교하는 요소를 추출한 후 . 요소는 제어되는 시퀀스에 다시 배치되거나 추가되지 않습니다.함수가 요소를 추출한
str.max_size
후 내부 상태 플래그in_stream
는 .로 설정됩니다ios_base::failbit
.이전에 나열된 오류 이외의 다른 오류입니다. 내부 상태 플래그
in_stream
는 .로 설정됩니다ios_base::badbit
.
내부 상태 플래그에 대한 자세한 내용은 다음을 참조하세요 ios_base::iostate
.
함수가 요소를 추출하지 않으면 in_stream
의 내부 상태 플래그는 ios_base::failbit
로 설정됩니다. 어떤 경우든 getline
은 in_stream
를 반환합니다.
예외가 throw되어도 in_stream
및 str
은 유효한 상태로 유지됩니다.
예시
다음 코드에서는 getline()
을 두 가지 모드에서 보여 줍니다. 첫 번째 모드에서는 기본 구분 기호(줄 바꿈 문자)를 사용하고 두 번째 모드에서는 공백을 구분 기호로 사용합니다. 파일의 끝 문자(키보드에서 CTRL+Z를 누름)를 사용하여 while 루프 종료를 제어합니다. 이 값은 내부 상태 플래그를 두 번째 동안 루프가 제대로 작동하기 eofbit
전에 지워 basic_ios::clear()
야 하는 내부 상태 플래그 cin
를 설정합니다.
// compile with: /EHsc /W4
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
string str;
vector<string> v1;
cout << "Enter a sentence, press ENTER between sentences. (Ctrl-Z to stop): " << endl;
// Loop until end-of-file (Ctrl-Z) is input, store each sentence in a vector.
// Default delimiter is the newline character.
while (getline(cin, str)) {
v1.push_back(str);
}
cout << "The following input was stored with newline delimiter:" << endl;
for (const auto& p : v1) {
cout << p << endl;
}
cin.clear();
vector<string> v2;
// Now try it with a whitespace delimiter
while (getline(cin, str, ' ')) {
v2.push_back(str);
}
cout << "The following input was stored with whitespace as delimiter:" << endl;
for (const auto& p : v2) {
cout << p << endl;
}
}
stod
문자 시퀀스를 double
으로 변환합니다.
double stod(
const string& str,
size_t* idx = 0);
double stod(
const wstring& str,
size_t* idx = 0
;
매개 변수
str
변환할 문자 시퀀스입니다.
idx
변환되지 않은 첫 번째 문자의 인덱스 값입니다.
Return Value
double
값입니다.
설명
함수는 요소 str
시퀀스를 호출strtod( str.c_str(), _Eptr)
하는 것처럼 형식 double
값으로 변환합니다. 여기서 함수의 내부 개체는 다음과 _Eptr
같습니다. 이 경우 str.c_str() == *_Eptr
형식 invalid_argument
의 개체를 throw합니다. 이러한 호출에서 errno
를 설정하는 경우에는 out_of_range
형식의 개체가 throw됩니다. 그렇지 않으면 null 포인터가 아닌 경우 idx
함수는 값을 저장 *_Eptr - str.c_str()
*idx
하고 반환합니다.
stof
문자 시퀀스를 float로 변환합니다.
float stof(
const string& str,
size_t* idx = 0);
float stof(
const wstring& str,
size_t* idx = 0);
매개 변수
str
변환할 문자 시퀀스입니다.
idx
변환되지 않은 첫 번째 문자의 인덱스 값입니다.
Return Value
float
값입니다.
설명
함수는 요소 str
시퀀스를 호출strtof( str.c_str(), _Eptr)
하는 것처럼 형식 float
값으로 변환합니다. 여기서 함수의 내부 개체는 다음과 _Eptr
같습니다. 이 경우 str.c_str() == *_Eptr
형식 invalid_argument
의 개체를 throw합니다. 이러한 호출에서 errno
를 설정하는 경우에는 out_of_range
형식의 개체가 throw됩니다. 그렇지 않으면 null 포인터가 아닌 경우 idx
함수는 값을 저장 *_Eptr - str.c_str()
*idx
하고 반환합니다.
stoi
문자 시퀀스를 정수로 변환합니다.
int stoi(
const string& str,
size_t* idx = 0,
int base = 10);
int stoi(
const wstring& str,
size_t* idx = 0,
int base = 10);
Return Value
정수 값입니다.
매개 변수
str
변환할 문자 시퀀스입니다.
idx
변환되지 않은 첫 번째 문자의 인덱스 값입니다.
base
사용할 기수입니다.
설명
함수 stoi
는 str의 문자 시퀀스를 형식 int
값으로 변환하고 값을 반환합니다. 예를 들어 문자 시퀀스 "10" 전달 시 stoi
에서 반환하는 값은 정수 10입니다.
stoi
는 함수 내부 개체인 경우 또는 유사한 방식으로 wcstol(Str.c_str(), _Eptr, idx)
호출되는 와이드 문자의 경우 _Eptr
strtol( str.c_str(), _Eptr, idx)
싱글 바이트 문자에 대한 함수 wcstol
와 유사하게 strtol
동작합니다. 자세한 내용은 , , wcstol
_strtol_l
_wcstol_l
를 참조하세요.strtol
stoi
이면 str.c_str() == *_Eptr
형식invalid_argument
의 개체를 throw합니다. 이러한 호출이 설정errno
되거나 반환된 값을 형식의 개체로 나타낼 수 없는 경우 형식int
out_of_range
의 개체를 throw합니다. 그렇지 않으면 idx가 null 포인터가 아닌 경우 함수는 에 저장됩니다 *_Eptr - str.c_str()
*idx
.
stol
문자 시퀀스를 long
으로 변환합니다.
long stol(
const string& str,
size_t* idx = 0,
int base = 10);
long stol(
const wstring& str,
size_t* idx = 0,
int base = 10);
매개 변수
str
변환할 문자 시퀀스입니다.
idx
변환되지 않은 첫 번째 문자의 인덱스 값입니다.
base
사용할 기수입니다.
Return Value
long 정수 값입니다.
설명
함수는 함수의 내부 개체인 경우를 호출 strtol( str.c_str(), _Eptr, idx)
_Eptr
하는 것처럼 str의 요소 시퀀스를 형식 long
값으로 변환합니다. 이 경우 str.c_str() == *_Eptr
형식 invalid_argument
의 개체를 throw합니다. 이러한 호출에서 errno
를 설정하는 경우에는 out_of_range
형식의 개체가 throw됩니다. 그렇지 않으면 null 포인터가 아닌 경우 idx
함수는 값을 저장 *_Eptr - str.c_str()
*idx
하고 반환합니다.
stold
문자 시퀀스를 long double
으로 변환합니다.
double stold(
const string& str,
size_t* idx = 0);
double stold(
const wstring& str,
size_t* idx = 0);
매개 변수
str
변환할 문자 시퀀스입니다.
idx
변환되지 않은 첫 번째 문자의 인덱스 값입니다.
Return Value
long double
값입니다.
설명
함수는 함수의 내부 개체인 경우를 호출 strtold( str.c_str(), _Eptr)
_Eptr
하는 것처럼 str의 요소 시퀀스를 형식 long double
값으로 변환합니다. 이 경우 str.c_str() == *_Eptr
형식 invalid_argument
의 개체를 throw합니다. 이러한 호출에서 errno
를 설정하는 경우에는 out_of_range
형식의 개체가 throw됩니다. 그렇지 않으면 null 포인터가 아닌 경우 idx
함수는 값을 저장 *_Eptr - str.c_str()
*idx
하고 반환합니다.
stoll
문자 시퀀스를 long long
으로 변환합니다.
long long stoll(
const string& str,
size_t* idx = 0,
int base = 10);
long long stoll(
const wstring& str,
size_t* idx = 0,
int base = 10);
매개 변수
str
변환할 문자 시퀀스입니다.
idx
변환되지 않은 첫 번째 문자의 인덱스 값입니다.
base
사용할 기수입니다.
Return Value
long long
값입니다.
설명
함수는 함수의 내부 개체인 경우를 호출 strtoll( str.c_str(), _Eptr, idx)
_Eptr
하는 것처럼 str의 요소 시퀀스를 형식 long long
값으로 변환합니다. 이 경우 str.c_str() == *_Eptr
형식 invalid_argument
의 개체를 throw합니다. 이러한 호출에서 errno
를 설정하는 경우에는 out_of_range
형식의 개체가 throw됩니다. 그렇지 않으면 idx 가 null 포인터가 아니면 함수가 값을 저장 *_Eptr - str.c_str()
*idx
하고 반환합니다.
stoul
문자 시퀀스를 부호 없는 long으로 변환합니다.
unsigned long stoul(
const string& str,
size_t* idx = 0,
int base = 10);
unsigned long stoul(
const wstring& str,
size_t* idx = 0,
int base = 10);
매개 변수
str
변환할 문자 시퀀스입니다.
idx
변환되지 않은 첫 번째 문자의 인덱스 값입니다.
base
사용할 기수입니다.
Return Value
부호 없는 long 정수 값입니다.
설명
함수는 함수의 내부 개체인 경우를 호출 strtoul( str.c_str(), _Eptr, idx)
_Eptr
하는 것처럼 str의 요소 시퀀스를 형식 unsigned long
값으로 변환합니다. 이 경우 str.c_str() == *_Eptr
형식 invalid_argument
의 개체를 throw합니다. 이러한 호출에서 errno
를 설정하는 경우에는 out_of_range
형식의 개체가 throw됩니다. 그렇지 않으면 idx 가 null 포인터가 아니면 함수가 값을 저장 *_Eptr - str.c_str()
*idx
하고 반환합니다.
stoull
문자 시퀀스를 unsigned long long
으로 변환합니다.
unsigned long long stoull(
const string& str,
size_t* idx = 0,
int base = 10);
unsigned long long stoull(
const wstring& str,
size_t* idx = 0,
int base = 10);
매개 변수
str
변환할 문자 시퀀스입니다.
idx
변환되지 않은 첫 번째 문자의 인덱스 값입니다.
base
사용할 기수입니다.
Return Value
unsigned long long
값입니다.
설명
함수는 함수의 내부 개체인 경우를 호출 strtoull( str.c_str(), _Eptr, idx)
_Eptr
하는 것처럼 str의 요소 시퀀스를 형식 unsigned long long
값으로 변환합니다. 이 경우 str.c_str() == *_Eptr
형식 invalid_argument
의 개체를 throw합니다. 이러한 호출에서 errno
를 설정하는 경우에는 out_of_range
형식의 개체가 throw됩니다. 그렇지 않으면 null 포인터가 아닌 경우 idx
함수는 값을 저장 *_Eptr - str.c_str()
*idx
하고 반환합니다.
swap
두 문자열의 문자 배열을 교환합니다.
template <class Traits, class Allocator>
void swap(basic_string<CharType, Traits, Allocator>& left, basic_string<CharType, Traits, Allocator>& right);
매개 변수
left
요소가 다른 문자열의 요소와 교환될 문자열입니다.
right
요소가 첫 번째 문자열과 교환되는 다른 문자열입니다.
설명
템플릿 함수는 문자열에 대해 특수 멤버 함수 left.swap
(right
)를 실행하여 일정한 복잡성을 보장합니다.
예시
// string_swap.cpp
// compile with: /EHsc
#include <string>
#include <iostream>
int main( )
{
using namespace std;
// Declaring an object of type basic_string<char>
string s1 ( "Tweedledee" );
string s2 ( "Tweedledum" );
cout << "Before swapping string s1 and s2:" << endl;
cout << "The basic_string s1 = " << s1 << "." << endl;
cout << "The basic_string s2 = " << s2 << "." << endl;
swap ( s1 , s2 );
cout << "\nAfter swapping string s1 and s2:" << endl;
cout << "The basic_string s1 = " << s1 << "." << endl;
cout << "The basic_string s2 = " << s2 << "." << endl;
}
Before swapping string s1 and s2:
The basic_string s1 = Tweedledee.
The basic_string s2 = Tweedledum.
After swapping string s1 and s2:
The basic_string s1 = Tweedledum.
The basic_string s2 = Tweedledee.
to_string
값을 string
로 변환합니다.
string to_string(int value);
string to_string(unsigned int value);
string to_string(long value);
string to_string(unsigned long value);
string to_string(long long value);
string to_string(unsigned long long value);
string to_string(float value);
string to_string(double value);
string to_string(long double value);
매개 변수
value
변환할 값입니다.
Return Value
값을 나타내는 string
입니다.
설명
함수는 값을 배열 개체 Buf
내부에 저장된 요소 시퀀스로 변환하고, 여기서는 다음과 Fmt
같이 함수sprintf(Buf, Fmt, value)
로 변환합니다.
"%d"
형식이면value
int
"%u"
형식이면value
unsigned int
"%ld"
형식이면value
long
"%lu"
형식이면value
unsigned long
"%lld"
형식이면value
long long
"%llu"
형식이면value
unsigned long long
"%f"
형식이면value
>이고float
,double
"%Lf"
형식이면value
long double
함수에서 string(Buf)
을 반환합니다.
to_wstring
값을 와이드 문자열로 변환합니다.
wstring to_wstring(int value);
wstring to_wstring(unsigned int value);
wstring to_wstring(long value);
wstring to_wstring(unsigned long value);
wstring to_wstring(long long value);
wstring to_wstring(unsigned long long value);
wstring to_wstring(float value);
wstring to_wstring(double value);
wstring to_wstring(long double value);
매개 변수
value
변환할 값입니다.
Return Value
값을 나타내는 와이드 문자열입니다.
설명
이 함수는 value
가 있는 위치에서 Buf
를 호출하는 것과 같이 swprintf(Buf, Len, Fmt, value)
을 함수 내부의 배열 개체 Fmt
에 저장된 요소 시퀀스로 변환합니다.
L"%d"
형식이면value
int
L"%u"
형식이면value
unsigned int
L"%ld"
형식이면value
long
L"%lu"
형식이면value
unsigned long
L"%lld"
형식이면value
long long
L"%llu"
형식이면value
unsigned long long
L"%f"
형식이면value
>이고float
,double
L"%Lf"
형식이면value
long double
함수에서 wstring(Buf)
을 반환합니다.