Sao chép một chuỗi và in ra chuỗi mới

Như tiêu đề, e có một string, sau khi sao chép nó sang string mới thì không in ra được string mới.
(E biết là trong thư viện của C/C++ có hàm sao chép string, nhưng e chỉ muốn sao chép một số ký tự trong string gốc)
Code test:

    #include <iostream>
    #include <string>

    int main() {
        std::string str1;
        std::cin >> str1;
        str1[3] = 'a';
        std::cout << str1;
        std::string str2;
        for(int i = 0; i < str1.length(); i++) {
            str2[i] = str1[i];
        }
        std::cout << str2;
    }

cái này nó bị out of range
bản thân str2 đang không có dữ liệu, length = 0, thì bạn không thể thực hiện gán kí tự vào vị trí i của str2 được. Bạn đọc thêm trong link sẽ rõ (operator [], chuyện gì xảy ra khi nó vượt quá length của string)
Còn nếu bạn muốn lấy 1 substring nào đó thì string vẫn có hỗ trợ substr() mà

2 Likes

Gọi resize() trước rồi gán gì chả được :slight_smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?