Gán giá trị cho biến chuỗi trong C++

Em mới học C++, có chút trục trặc khi đụng vô ba cái chuỗi này, nhờ mọi người giải đáp hộ :slight_smile:

Em thắc mắc là tronq C++ thì gán giá trị cho biến xâu thì phải làm ntn, như tronq hình cả 2 câu lệnh đều không dùng được, chương trình của em có thiếu gì monq mọi người góp ý giúp =))

Bạn chưa cấp phát bộ nhớ cho str và thiếu header file string.h

1 Like

học C++ mà đi xài code C??

2 Likes

Có vấn đề gì à bạn ?

Câu lệnh của bạn str = "A" không hẳn là sai, ở 1 số IDE nó sẽ không báo lỗi, mà sẽ warning - tức cảnh báo, bạn vẫn có thể chạy nó bình thường, lỗi chỉ xảy ra khi bạn cố tình thay đổi giá trị đang được trỏ bởi nó thôi, ( vì giá trị đang được trỏ lúc này là ở vùng nhớ hằng)
Tuy vậy ở 1 số IDE chặt chẽ như Visual Studio - Code Block có thể nó sẽ báo lỗi.
Bạn có thể #include string và dùng kiểu dữ liệu string, khai báo và gán string str ="ABCD" lúc in ra nếu dùng printf thì để là %s và in str.c_str();

Nếu dùng con trỏ char * để thể hiện 1 xâu ,hãy chắc chắn rằng bạn đã thành thạo về phần con trỏ - cấp phát - các vùng nhớ - và hằng.

vấn đề lớn chứ, vô đọc code C++ mà bị táng vô mặt code C thì dội ra ngay, mất thời gian vô đọc

cái gì mà string.h cho phép xài std::string, lộn nữa rồi, học C kiểu C++ khổ thế đấy

5 Likes

Dùng strcpy là đi đứt vì str đã có cái gì đâu mà copy.

Và code này rặt C, điều này cho thấy thớt chưa tìm hiểu mình đang học gì. Không phải cứ nói C++ thì nó là C++, khiếp đến mức viết string chung với memmove memcpy.

2 Likes

Mình đang làm với C/C++ . Bản thân mình thấy việc dùng lẫn lộn khá bình thường, vì dù sao C++ và các ngôn ngữ phổ biến hiện nay vẫn phải biên dịch ra C trước khi chuyển thành mã máy. Thư viện của C++ chủ yếu vẫn được phát triển từ C lên, vẫn include được thì vẫn là có thể dùng chung được, nếu không muốn dính dáng gì nữa thì người ta đã không cho include. Nếu xét trên phương diện một người học lập trình C++ thì chẳng qua stdio.h hay string nó cũng chỉ là 1 cái thư viện.
Chắc mình là người suy nghĩ đơn giản =))

Bát nháo rồi, không ai nói là bạn không được dùng chung, tuy nhiên bạn phải hiểu mình đang code C hay C++, nếu dòng code dùng thư viện cstring thì chỉ có xử lí char chứ không xử lí std::string
Còn rất nhiều, cấp phát động C không thể xử lí cấp phát động của C++,…

3 Likes

error
Câu lệnh 1 mình nghĩ không có vấn đề gì. str = “A” tức là cho con trỏ kiểu char str kia trỏ đến vùng nhớ lưu chuỗi “A” trong memory.
Câu lệnh thứ 2 nó sai vì 1.không co hàm strcopy, chỉ có hàm strcpy( str , “A” ) thôi, lỗi cú pháp. Bạn nên dùng editor như là visual studio hoặc Qt creator để học thì tốt hơn, nó sẽ check các lỗi về cú pháp cho mình. 2. biến str chưa được khởi tạo. Muốn dùng char* mà lại là des thì bạn có thể làm thế này :

char* str = ( char*)malloc( 10 );
strcpy( str , "A");
printf(" %s ", str );
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?