(C++) String

Posted by : at

Category : Cpp


substr

#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
	string str {"Hello world"};
    str[1] = 'a';
    string s1 = str.substr(6);
    string s2 = str.substr(6,2);
	cout << str << endl;        // Hallo world
	cout << s1 << endl;         // world
	cout << s2 << endl;         // wo
 
	return 0;
}

find, rfind

void find() {
	string str {"Hello world"};
	size_t pos = str.find('o');
	
	if (pos != string::npos) {
		str[pos] = 'p';
	}
	else {
		cout << "Could not find the search string\n";
	}
	cout << str << endl;
}

void rfind() {
	string str {"Hello world"};
	size_t pos = str.rfind('o');

	if (pos != string::npos) {
		str[pos] = 'p';
	}
	else {
		cout << "Could not find the search string\n";
	}
	cout << str << endl;
}

find option

#include <iostream>
#include <string>

using namespace std;

int main() {
	string str {"Hello world"};
    /*
    H e l l o   w o r l d
    0 1 2 3 4 5 6 7 8 9 10
    */
	string vowels {"aeiou"};
	cout << str.find_first_of(vowels) << endl;      // 1
	cout << str.find_last_of(vowels) << endl;       // 7
	cout << str.find_first_not_of(vowels) << endl;  // 0
	cout << str.find_last_not_of(vowels) << endl;   // 10

	return 0;
}

append

#include <iostream>
using namespace std;
 
int main() {
	string hello {"Hello"};
	hello.append(" world");
	cout << "hello = " << hello << endl;		// hello = Hello world
	string hello2 {"Hello"};
	hello2.append("wow!!!!", 3, 2);				// hello2 = Hello!!
	cout << "hello2 = " << hello2 << endl;

	return 0;
}

insert

#include <iostream>
using namespace std;

int main() {
	string hello { "hello" };
	hello.insert(4, "eh");
	hello.insert(6, 3, '.');
	hello.insert(6, 1, '.');
	cout << "hello = " << hello << endl;		// hello = helleh....o
	return 0;
}
#include <iostream>
using namespace std;

int main() {
	string hello { "hello" };
	hello.insert(4, "eh");			// helleho
	cout << "1 : " << hello << endl;
	hello.insert(6, 3, '.');		// helleh...o
	cout << "2 : " << hello << endl;
	hello.insert(6, 1, '.');		// helleh....o
	cout << "3 : " << hello << endl;
	
	string dol {"Dolly"};		// oll
	hello.insert(4, dol, 1, 3);		// hellolleh....o
	cout << "4 : " << hello << endl;
	size_t opos = hello.find('o');                                       
	if (opos != string::npos)
		hello.insert(opos, "OOO");
	cout << "hello = " << hello << endl;

	return 0;
}

char[] 보다 장점이 있나?

#include <iostream>

int main()
{
    char s1[10] = "hello";
    char s2[10];

    s2 = s1;        // error - strcpy(s2, s1)

    if (s1 == s2)   // error strcmp(s1, s2)
    {

    }
}

저런 간단한 비교조차 못함 -> string을 쓰자


string to const char*

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

int main()
{
    string s1 = "hello";
    char s2[10];

    strcpy(s2, s1);             // error - string to const char* 변환필요
    strcpy(s2, s1.c_str());     // ok

string to double

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

int main()
{
    // string to double
    string s3 = "3.4";
    double d = stod(s3);

    // double to string
    string s4 = to_string(5.4);

접미사를 통한 자료형 선택

#include <iostream>
#include <string.h>
using namespace std;
using namespace std::string_literals;

void foo(string s) { cout << "string" << endl; }
void foo(const char * s) { cout << "char" << endl; }

int main()
{
    foo("hello");   // char
    foo("hello"s);  // string -> 접미사로 자료형 선택이 가능
}
  • “string”s - string
  • 0s - seconds
  • 0i - complex

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links