[C++] string / vector / vector+구조체
2022. 6. 15. 16:11ㆍ돌다리도 두드려보고 건너라 <복만살>
728x90
#include <iostream>
#include <string>
using namespace std;
void main()
{
char charText[] = "Hello World";
cout << "문자의 배열버전 : " << charText << endl;
cout << endl << endl;
string stringText;
stringText = "Hello World";
cout << "스트링 버전 : " << stringText << endl;
cout << "문자열의 길이 : " << stringText.length() << endl;
cout << "문자열 전체를 반환 : " << stringText.substr() << endl;
cout << "시작인덱스로부터 끝까지 : " << stringText.substr(6) << endl;
cout << "시작인덱스부터 길이만큼 : " << stringText.substr(6,2) << endl;
cout << "문자열 속 찾을 문자열이 있는지, 있으면 그 문자열의 인덱스 반환 : " << stringText.find(" ") << endl;
cout << "문자열 속 찾을 문자열이 없을때 나타나는 숫자 : " << stringText.find("*") << endl;
cout << "위의 경우와 동일한 방법(string::npos) : " << string::npos << endl;
// find가 가져온 값이 string::npos라는것은 못찾았다는 뜻
if (stringText.find("*") == string::npos)
{
cout << "*은 " << stringText << " 안에 없다" << endl;
}
// 반대로 find가 가져온 값이 string::npos가 아니라는 것은 찾았다는 뜻
if (stringText.find(" ") != string::npos)
{
cout << "공백은 " << stringText << " 안에 있다" << endl;
cout << "인덱스는 " << stringText.find(" ") << endl;
}
cout << "0부터 공백까지 전체를 반환 : " << stringText.substr(0, stringText.find(" ")) << endl;
string targetText = "Hello Hello World World";
string result = "";
while (targetText.find(" ") != string::npos)
{
result += targetText.substr(0, targetText.find(" "));
targetText = targetText.substr(targetText.find(" ") + 1);
}
result += targetText;
cout << "공백을 없애고 문자열 전체 반환 : " << result << endl;
stringText += "글자추가";
stringText = stringText + "글자또추가";
cout << "같은 문자열끼리 더할수 있음 : " << stringText << endl;
string numText = "100";
cout << "stoi는 문자열을 정수형으로 변환 : " << stoi(numText) + 50 << endl;
cout << "to_string는 숫자를 문자열로 변환 : " << to_string(stoi(numText) + 50) + "점" << endl;
}
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void main()
{
// vector<데이터타입> 변수명;
// vector<데이터타입> 변수명(크기); 생성자가 있을경우 미리 공간을 할당해줌.
// intVec와 intArray 둘다 int형 원소를 10개 가지고 있다.
// 둘다 같은 기능을 수행한다
vector<int> intVec(10); // 벡터는 동적배열이기때문에 크기를 늘려줄수 있다.
int intArray[10]; // 일반배열은 인덱스범위를 초과할수 없다.
/*
for (int i = 0; i < 10; i++)
{
intArray[i] = i*5;
intVec[i] = i*5;
cout << "배열 " << i << "번째의 값 : " << intArray[i] << endl;
cout << "벡터 " << i << "번째의 값 : " << intVec[i] << endl;
}
*/
// push_back(값); 벡터의 맨뒤에다가 원소를 추가
intVec.push_back(10);
intVec.push_back(20);
intVec.push_back(30);
intVec.push_back(40);
// insert(추가하고싶은 위치, 추가할 값); 추가할 값 삽입
intVec.insert(intVec.begin() + 2, 50);
// erase(삭제하고싶은 위치); 지움
intVec.erase(intVec.begin() + 0);
cout << "size() 벡터 속 원소의 개수를 반환 : " << intVec.size() << endl;
for (int i = 0; i < intVec.size(); i++)
{
cout << intVec[i] << endl;
}
}
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Temp
{
int value;
Temp()
{
}
Temp(int _value)
{
value = _value;
}
void PrintValue()
{
cout << "정보출력 : " << value << endl;
}
void AddValueOne()
{
value++;
}
};
void main()
{
Temp tempA(10);
Temp tempB(20);
Temp tempC(30);
Temp tempD(40);
vector<Temp*> tempVec;
tempVec.push_back(&tempA);
tempVec.push_back(&tempB);
tempVec.push_back(&tempC);
tempVec.push_back(&tempD);
cout << "tempVec의 사이즈 : " << tempVec.size() << endl;
for (int i = 0; i < tempVec.size(); i++)
{
tempVec[i]->AddValueOne();
tempVec[i]->PrintValue();
}
cout << "-----------------------" << endl;
tempA.PrintValue();
tempVec[0]->PrintValue();
}
728x90
'돌다리도 두드려보고 건너라 <복만살>' 카테고리의 다른 글
[C++] 자료구조 종합 정리 (0) | 2022.06.27 |
---|---|
[C++] 내가 만든 선택지형 textRPG (0) | 2022.06.20 |
[C++] 구조체/생성자와 소멸자/동적할당/동적배열/상속/가상함수 (0) | 2022.06.13 |
[C++] 배열/2차원배열/구조체/멤버함수/입력/랜덤 (0) | 2022.06.03 |
[C++] 출력/변수/지역성/조건문/연산자/반복문/함수/스택/포인터/배열 (0) | 2022.06.03 |