디렉터리에있는 파일을 열 수 있도록 .txt 확장명을 추가하고자하는 개인 클래스 변수 (char name [10])가 있습니다. 어떻게해야합니까? 연결 문자열을 보유하는 새 문자열 변수를 만드는 것이 좋습니다.C++에서 두 문자열을 연결하는 방법은 무엇입니까?
답변
첫째, char*
또는 char[N]
를 사용하지 마십시오. std::string
을 사용하면 다른 모든 것들이 너무 쉽게됩니다!
예를 들면,
std::string s = "Hello";
std::string greet = s + " World"; //concatenation easy!
쉬운, 그렇지? 지금 당신은 당신이 어떤 함수에 전달하려는 경우와 같이 어떤 이유로 char const *
해야하는 경우
, 당신은이 작업을 수행 할 수 있습니다이 기능을 가정
some_c_api(s.c_str(), s.size());
는 선언과 같은 :
some_c_api(char const *input, size_t length);
std::string
탐색
자신은 여기에서 시작 :
- ,321 0
희망이 있습니다.
char*
대신 std::string
을 사용하지 않는 이유는 무엇입니까? 연결은 사소한 것 : 모든
std::string str = "abc";
str += "another";
"C 스타일 문자열"연결을 수행하는 이식 된 C 라이브러리의 strcat() 함수가 있습니다. 당신이 시도하지 자신의 기능을 들고 오지에 대한
은 BTW C++은 C 스타일의 문자열을 처리하는 기능을 잔뜩에도 불구하고, 그것은 도움이 될 수있는, 뭔가 같은 :char * con(const char * first, const char * second) {
int l1 = 0, l2 = 0;
const char * f = first, * l = second;
// step 1 - find lengths (you can also use strlen)
while (*f++) ++l1;
while (*l++) ++l2;
char *result = new char[l1 + l2];
// then concatenate
for (int i = 0; i < l1; i++) result[i] = first[i];
for (int i = l1; i < l1 + l2; i++) result[i] = second[i - l1];
// finally, "cap" result with terminating null char
result[l1+l2] = '\0';
return result;
}
... 그리고 나서 ...
char s1[] = "file_name";
char *c = con(s1, ".txt");
... 그 결과는 file_name.txt
입니다.
자신 만의 operator +
을 작성하고 싶지만 인수로 포인터 만 사용하는 IIRC 연산자 오버로드는 허용 할 수 있습니다.
또한이 경우 결과가 동적으로 할당된다는 것을 잊지 마십시오. 메모리 누수를 피하기 위해 delete를 호출하거나 스택 할당 된 문자 배열을 사용하도록 함수를 수정할 수 있습니다. 물론 제공됩니다. 충분한 길이입니다. 모두가 std::string
을 권장하는 이유 이제 볼
char filename[sizeof(name) + 4];
strcpy (filename, name) ;
strcat (filename, ".txt") ;
FILE* fp = fopen (filename,...
:
//String appending
#include<iostream>
using namespace std;
void stringconcat(char *str1, char *str2){
while (*str1 != '\0'){
str1++;
}
while(*str2 != '\0'){
*str1 = *str2;
str1++;
str2++;
}
return ;
}
int main( ){
char str1[100];
cin.getline(str1,100);
char str2[100];
cin.getline(str2,100);
stringconcat(str1,str2);
cout<<str1;
getchar();
return 0;
}
.......... 내가 뭘보고 있니? –
strcat (대상, 소스)는 C++의 두 문자열을 연결하는 데 사용할 수 있습니다.
는 다음 링크 -대신 이전 스타일 C 문자열의 C++ 문자열 클래스를 사용하는 것이 좋습니다에서 조회 할 수있는 깊은 이해를 위해, 생활은 훨씬 쉽게 될 것입니다. 당신은 오래된 스타일의 문자열을 기존의 경우
, 당신은 문자열 클래스
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout<<greeting + "and there \n"; //will not compile because concat does \n not work on old C style string
string trueString = string (greeting);
cout << trueString + "and there \n"; // compiles fine
cout << trueString + 'c'; // this will be fine too. if one of the operand if C++ string, this will work too
- 1. C에서 문자열을 연결하는 방법 #
- 2. iPhone에서 두 개의 문자열을 연결하는 방법은 무엇입니까?
- 3. 두 개의 원자/문자열을 연결하는 방법은 무엇입니까?
- 4. Xamarin.Forms에서 문자열을 연결하는 방법은 무엇입니까?
- 5. C에서 정수를 문자열에 연결하는 방법은 무엇입니까?
- 6. propertygrid보기에서 문자열을 double과 연결하는 방법은 무엇입니까? C#
- 7. jquery가 문자열을 두 번 연결하는 이유는 무엇입니까?
- 8. 문자열을 변수와 연결하는 방법은 무엇입니까?
- 9. 문자열을 연결하는 올바른 방법은 무엇입니까?
- 10. 문자열을 올바르게 연결하는 방법은 무엇입니까?
- 11. 튜플의 문자열을 연결하는 방법은 무엇입니까?
- 12. YAML에서 문자열을 연결하는 방법은 무엇입니까?
- 13. PHP에서 문자열을 연결하는 방법은 무엇입니까?
- 14. 표현식과 문자열을 연결하는 방법은 무엇입니까?
- 15. Jenkinsfile에서 문자열을 연결하는 방법은 무엇입니까?
- 16. 루프에서 문자열을 연결하는 방법은 무엇입니까?
- 17. Objective-C에서 두 개의 float 값을 연결하는 방법은 무엇입니까?
- 18. C에서 문자열을 전환하는 방법은 무엇입니까?
- 19. C에서 문자열을 역전시키는 방법은 무엇입니까?
- 20. ANSI C에서 템플릿 헤더를 연결하는 방법은 무엇입니까?
- 21. 하스켈에서 두 개의 (IO) 문자열을 연결하는 방법은 무엇입니까?
- 22. 두 개의 문자열을 여러 개의 null 문자로 연결하는 방법은 무엇입니까?
- 23. Tcl에서 문자열을 간결하게 연결하는 방법은 무엇입니까?
- 24. 두 개의 문자열을 연결하는 C++
- 25. Objective C에서 개체 애니메이션을 연결하는 방법은 무엇입니까?
- 26. 클래식 ASP에서 슬래시로 문자열을 연결하는 방법은 무엇입니까?
- 27. char *와 LPWSTR 문자열을 연결하는 방법은 무엇입니까?
- 28. C에서 문자열을 정의하는 올바른 방법은 무엇입니까?
- 29. objective-c에서 문자열을 비교하는 방법은 무엇입니까?
- 30. 문자열을 기존 파일에 연결하는 방법은 무엇입니까?
이 문자열 연결의 시간 복잡도는 무엇인가에 은밀한 할 수 있습니까? – d34th4ck3r
@ d34th4ck3r : 선형입니다. – Nawaz