Hỏi Hàm để Tách Chuỗi - Programming - Dạy Nhau Học Trang chủ » Tách String C++ » Hỏi Hàm để Tách Chuỗi - Programming - Dạy Nhau Học Có thể bạn quan tâm Tách String Python Tách String Thành List Tách String Trong C# Tách String Trong Java Tách String Trong Js Hỏi hàm để tách chuỗi programming c++ nhatlonggunz (nhatlonggunz) February 28, 2022, 7:35am #1 Em đang làm thử hàm, trong đó, hàm này sẽ cắt 1 chuỗi bắt đầu từ vị trí pos mà mình nhập vào cho đến hết chuỗi lớn. Sau đó gán chuỗi mới đó (em tạm gọi là subString). Đây là code của em: char* cut(char* str, int pos, char* subStr) { char word; int index = 0; do{ word = str[pos]; subStr[index] = word; pos++; index++; }while(word != '\0'); str[pos] = '\0'; // return str; } int main() { int time, pos = 5; char str[] = "Hello World"; char subStr[] = ""; cut(str, pos, subStr); std::cout << str << std::endl << subStr << std::endl; return 0; } Với vị trí 5, em muốn chuỗi chính sẽ bị cắt ra, thì output sẽ là: str: "Hello" subStr: " World" Thế nhưng kết quả lại ra: str: "World" subStr: " World" Sau khi debug thì em thấy ở cái dòng subStr[index] = word; Nó sẽ thay đổi luôn cả 2 chuỗi. Có cách nào khắc phục cái này không ạ ? nguyenchiemminhvu (NCMV) May 17, 2015, 6:02am #2 Try this #include <iostream> using namespace std; char* substring(char* s,int pos) { char* t = &s[pos]; s[pos-1] = '\0'; return t; } int main() { char s[50] = "hello world"; char* t = substring(s,6); cout << s << endl; cout << t << endl; return 0; } 2 Likes Rok_Hoang (Minh Hoàng) May 17, 2015, 7:01am #3 bị mất 1 ký tự rồi… @nhatlonggunz thử này xem. biến pos của em đã bị cộng dồn lên rồi. #include <iostream> using namespace std; void cut(char *str, int pos, char *subStr) { char word; int index = 0; int index2 =pos; do{ word = str[index2]; subStr[index] = word; index2++; index++; }while(word != NULL); str[pos] = 0; } int main() { int time, pos = 5; char str[] = "Hello World"; char subStr[]=""; cut(str, pos, subStr); std::cout << str << std::endl << subStr << std::endl; getchar(); getchar(); return 0; } 2 Likes Gio (Gió) May 17, 2015, 7:37am #4 update : code không có lỗi nhưng có lẽ không khai báo kích thước nên đè bộ nhớ lên nhau khai báo kích thước subStr nếu không sẽ bị lỗi Đơn giản hơn void subString(char *str, int pos, char* subStr){ strcpy(subStr,str+pos); str[pos]=0; } 2 Likes nhatlonggunz (nhatlonggunz) May 18, 2015, 5:07am #5 Dạ cám ơn anh nhiều !!! Mà mọi người cho em hỏi, tại sao lại có tình trạng như trên ạ ? Khi em gán subStr[index] = word ấy. Mục đích của em là làm cái hàm tựa tựa strcpy ấy anh @Gio Hic, có ai giải thích hộ em tại sao code của em gặp tình trạng trên không :’( @ltd @Gio Gio (Gió) May 18, 2015, 5:16am #6 Thứ nhất là không khai báo bộ nhớ cho subStr cần thiết để chứa Kiểm tra cout<<distance(subStr,str)<<endl; // => 1 khi đó độ dài của xâu subStr nếu thiếu thì sẽ tràn sang bộ nhớ của str. Thứ hai là nếu khai báo đủ bộ nhớ thì thuật toán bị sai: vì khi đó pos sẽ chỉ đến cuối chuỗi, thay bằng 1 biến khác lưu vị trí của pos ban đầu 4 Likes DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » Tách String C++ Tách String Trong C++ Tách Chuỗi Trong C++ (strtok) Hướng Dẫn Split String C++ - QA Bug [C++ Cơ Bản] Tách Các Từ Trong Một Chuỗi | Thào A Vảng - YouTube Tách Xâu Bằng Stringstream - Programming - Dạy Nhau Học Phân Tích Cú Pháp (tách) Một Chuỗi Trong C++ Bằng Cách Sử Dụng ... Tách Một Chuỗi Bằng C++ 11 Bài Toán Tách Từ Với String Của STL C++ - ItLab Code Runner Tách Chuỗi Thành Các Từ Riêng Lẽ? - UIT - Forum Xâu Trong C++ - VNOI Tách Các Từ Trong Chuỗi [Archive] - Diễn Đàn Tin Học [Thắc Mắc] Tách Chuỗi String Thành Từng Từ Riêng Thông Qua Khoảng ... Strtok Trong C++ - Techacademy