アルゴリズム基本知識C++とJava比較:文字列編
右側のディレクトリを確認し、必要な部分 を表示します.
文字列
C++
.find()の文字列(文字)が存在しない場合は、-1を返します.逆も同様です.int型に含まれない大きなゴミ値を返します.
C++コンパイラバージョンによっては、-1が出力される場合があります.これは混同を招く可能性があります.
したがって、上記のコードはintではなくsize tを使用しています.
また,この点(単語が存在するか否か)を理解するために,Nopositionを表すstring::nposを用いた.
C++
.replace()メソッドは、形状によって異なる機能を有し、cotteでよく使用される形状の例のみを示す.メソッドの詳細については、次のリンクを参照してください.
Java
C++数字->文字列
整数(Integer)Integer.toString()
浮動小数点(Float)Float.toString()
実数(Double)Double.toString()
ドラゴンtoString() 文字列->数値
整数(Integer)Integer.parseInt()
浮動小数点(Float)Float.parseFloat()
実数(Double)Double.parseDouble()
ドラゴンparseLong()
C++ strcmp(), compare(), ==
Java equals()
文字列
//C++에서 문자열 사용 및 관련 메소드 사용하려면 string 헤더 import해야함
#include <string>
部分文字列インデックスの検索C++
size_t index = str.find("apple"); //문자열 검색
index = str.find('a'); //문자(char형) 검색
//해당 문자열/문자가 시작되는 인덱스를 반환함
index = str.find("apple",10); //문자열을 10번째 index부터 검색
ここはとても重要です.find()の文字列(文字)が存在しない場合は、-1を返します.逆も同様です.int型に含まれない大きなゴミ値を返します.
C++コンパイラバージョンによっては、-1が出力される場合があります.これは混同を招く可能性があります.
したがって、上記のコードはintではなくsize tを使用しています.
また,この点(単語が存在するか否か)を理解するために,Nopositionを表すstring::nposを用いた.
string str = "Hello";
bool check = string::npos == str.find('z'); //1, true
Javaint index = str.indexOf("welcome"); //문자열 검색
index = str.indexOf('t'); //문자(char형) 검색
//해당 문자열/문자가 시작되는 인덱스를 반환함
index = str.indexOf("welcome",10); //문자열을 10번째 index부터 검색
index = str.indexOf('t',10); //문자를 10번째 index부터 검색
boolean check = s.contains("welcome") //단순히 찾기
//char형은 안됨
文字列の置換、一部の文字列の抽出C++
.replace()メソッドは、形状によって異なる機能を有し、cotteでよく使用される形状の例のみを示す.メソッドの詳細については、次のリンクを参照してください.
//교체
str.replace(index, length, subStr);
//index: 바꾸고자 하는 문자열 시작 인덱스
//length: 시작 인덱스부터 바꾸고자 하는 길이
//subStr: 삽입하고자 하는 문자열
//subStr 자리에 문자(char형) 지원하지 않음
string str = "Hello world";
str.replace(6, 5, "apple"); //Hello apple
//추출
string subStr = str.substr(index); //인덱스부터 끝까지 추출
string subStr = str.substr(index, length); //인덱스부터 length 길이 부분 문자열 추출
ソース:https://modoocode.com/250Java
String str = "동해. 물과. 백두산이. 마르고. 닳도록.";
//모든 문자열 바꾸기
str = str.replace(".", "!"); //동해! 물과! 백두산이! 마르고! 닳도록!
//처음에 발견한 문자열 바꾸기(바꾼 횟수를 구할 때 유용)
str = str.replaceFirst(".", "!"); //동해! 물과. 백두산이. 마르고. 닳도록.
//C++와 다르게 문자열에 메소드를 사용만 한다고 바뀌지 않는다. 반환값을 받아야한다.
//이 두개 말고 바꿀 문자열에 정규식을 사용하는 .replaceAll() 메소드가 있는데 코테에서 거의 사용하는 일이 없으니 소개하지 않습니다.
//중요! char형 오버로딩 여부: 아래 두개만 가능
str.replace(String, String);
str.replace(char, char);
//추출
str = str.substring(beginIndex, endIndex); //beginIndex부터 endIndex-1까지 추출
str = str.substring(index); //index부터 끝까지 추출
数値->文字列、文字列->数値C++
//숫자->문자열: to_string()
#include <string>
int number_int = 1234;
string str = to_string(number_int); //"1234"
double number_double = 1234.1234;
str = to_string(number_double); //"1234.123400"
//소수점 아래 여섯 자리까지 표현함. 원하는 만큼 표현하기 위해서는 반올림 버림 등 메소드를 적절하게 활용해야 함.
//문자열->숫자: stoi()
#include <string>
string str_int = "1234";
int number_int = stoi(str_int) //1234
string str_double = "1234.12";
double number_double = stod(str_double) //1234.12
//float형 변환을 위한 stof도 있음
Java整数(Integer)Integer.toString()
浮動小数点(Float)Float.toString()
実数(Double)Double.toString()
ドラゴンtoString()
int number_int = 1234;
string str = Integer.toString(number_int); //"1234"
double number_double = (double)1234.1234;
str = Double.toString(number_double); //"1234.1234"
float number_float = (float)1234.1234;
str = Float.toString(number_float); //"1234.1234"
整数(Integer)Integer.parseInt()
浮動小数点(Float)Float.parseFloat()
実数(Double)Double.parseDouble()
ドラゴンparseLong()
String str_int = "1234";
int number = Integer.parseInt(str_int);//1234
String str_double "1234.12";
double number = Double.parseDouble(str_double);//1234.12
文字列の比較C++
//C에서는 string 클래스가 없고 char형 배열로 문자열을 관리하기 때문에 strcmp() 함수를 사용함.
//코테는 C++ string 클래스를 사용하니, 알아두는 정도만 보자.
char str1[] = "Hello";
char str2[] = "Hello";
int check = strcmp(str1, str2); //0
check = strcmp("aa", "bb"); //-1: 첫 번째 매개변수가 사전순 앞에 있으면 -1 반환
check = strcmp("bb", "aa"); //1: 첫 번째 매개변수가 사전순 뒤에 있으면 1 반환
//일반적으로 사용하는 C++ string
//C++는 ==와 .compare() 메소드 차이가 거의 없음(compare()가 좀 더 빠른 정도). string의 == 연산자를 연산자 오버로딩을 통해 구현함.
//따라서 그냥 == 연산자를 사용해도 무관함
//자세한 이야기는 아래 출처 링크를 참조하세요.
string str1 = "Hello";
string str2 = "Hello";
int check = str1.compare(str2); //0
str1 = "aa";
str2 = "bb";
check = str1.compare(str2); //-1
check = str2.compare(str1); //1
bool check = str1 == str2; //false;
ソース:https://choryeonworkshop.tistory.com/119Java
//Java는 C++와 다르게 == 연산자를 사용하면 주솟값을 비교함
//문자열 비교는 무조건 .equals() 메소드만 사용함
//자세한 이야기는 아래 출처 링크를 참조하세요.
String str1 = "hello";
String str2 = "hello";
boolean check = str1.equals(str2); //true;
ソース:https://coding-factory.tistory.com/536Reference
この問題について(アルゴリズム基本知識C++とJava比較:文字列編), 我々は、より多くの情報をここで見つけました https://velog.io/@goaldae/알고리즘-기본-숙지-내용-C와-Java-비교를-중심으로-문자열편テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol