UTF8ToString 인코딩 질문있습니다.
#include <iostream>
#include <string>
#include <emscripten.h>
#include <emscripten/bind.h>
using namespace std;
EM_JS(void, call_js, (const string subject, const string msg), {
console.log("Subject: js " + subject, UTF8ToString(msg));
console.log("Pointer: js " + msg, UTF8ToString(subject));
jsFunction(UTF8ToString(subject), UTF8ToString(msg));
});
bool my_calls()
{
const string subject = "제목";
const string msg = "메세지";
cout << "Subject: cpp " << subject << "\nPointer: cpp " << msg << endl;
call_js(subject, msg);
return true;
}
EMSCRIPTEN_BINDINGS(my_module)
{
emscripten::function("callJs", &my_calls);
}UTF8ToString으로 변환할때 포인터와 length로 변환하야하나요?
string 타입을 직접 utf8로 변환해도 되는것 같은데 해당방식으로 문제가 생길 수 있는지 궁금합니다.
답변 1
0
안녕하세요. geekgleeguru 님,
UTF8ToString은 Emscripten의 메모리에서 특정 포인터를 가져와 문자열로 변환합니다. 그러나 C++의 std::string 객체를 이 방법으로 처리하려고 하면 문제가 발생할 수 있습니다.
std::string은 메모리 내에서 문자열을 보관하며, 직접 포인터와 길이를 사용하여 접근하는 것이 아닙니다. C++에서 JavaScript로 문자열을 전달할 때는 보통, std::string 객체의 .c_str() 메서드를 사용하여 문자 열의 C 스타일 포인터를 얻고, JavaScript에서는 이를 적절히 처리합니다.
위와 같이 사용하면 문자열을 전달할 수 있습니다. 아래는 C++ 문자열을 JavaScript로 전달하고, JavaScript에서 이를 올바르게 처리하는 수정된 코드 예시입니다.
#include <iostream>
#include <string>
#include <emscripten.h>
#include <emscripten/bind.h>
using namespace std;
EM_JS(void, call_js, (const char* subject, const char* msg), {
console.log("Subject: js " + UTF8ToString(subject));
console.log("Pointer: js " + UTF8ToString(msg));
jsFunction(UTF8ToString(subject), UTF8ToString(msg));
});
bool my_calls()
{
const string subject = "제목";
const string msg = "메세지";
// printf("Subject: %s\nPointer: %s\n", subject.c_str(), msg.c_str());
cout << "Subject: cpp " << subject << "\nPointer: cpp " << msg << endl;
call_js(subject.c_str(), msg.c_str());
return true;
}
EMSCRIPTEN_BINDINGS(my_module)
{
emscripten::function("callJs", &my_calls);
}
혹시 더 궁금한게 있으면 언제든지 질문해주세요.
감사합니다. 김대진 드림.
Build system의 Obs 에 관한 질문
1
29
2
로드맵 재수강 로드맵 할인문의
1
43
2
강의 재수강 문의
1
54
2
강의 연장 문의
1
79
2
강의 자료 ppt나 pdf 파일은 없을까요?
0
69
1
강의 연장 질문
1
60
2
Rust는 어떻게 컴파일 타임에 dangling reference를 막나요?
0
70
2
22강 후반부와 23강 전반부의 내용이 겹칩니다.
1
58
1
강의 추가 계획 질문
0
76
2
코드 크가가 너무 작은대 이거 화면확대 어떻게 하나요?
0
166
4
강의 자료 pdf 다운로드 할 수 있을까요?
0
95
3
혹시 강의 연장 가능할까요? ㅠㅠ
1
73
2
테스트 배포시 에러가 발생합니다.
0
121
2
달력 31일까지 나오지 않음.
1
75
2
parent.width 관련 질문.
1
66
2
custom Widget 강의 에서 알려주신 promoted widgets 질문 드립니다.
1
118
2
소유권 이전과 관련된 질문입니다
0
148
2
QT와 QT Designer에 대한 질문 사항
1
167
2
mutex, incNumber는 global 안붙여도 되는건가요?
1
115
2
build system 선택창
1
309
1
리눅스 개발환경 구성 시 Ubuntu 22.04LTS 필요 여부
1
733
2
강의 노트(PPT) 파일은 제공이 안되는 건가요?
1
407
1
clock 예제 빌드 오류
1
490
1
Wasm windows 개발환경 구축 중 오류
2
701
1





