01/10/2018, 10:43
Lỗi out_of_range at memory location 0x00CFF8F0 trong C++ là gì
khi mình so sánh:
string lo;
getline(cin, lo);
for (int i = 0; i < lo.size(); i++)
{
if (lo.at(i) == lo.at(i - 1))
{
break;
}
}
cout << lo << endl;
thi mình gặp lỗi Unhandled exception at 0x7535A832 in test1.exe: Microsoft C++ exception: std::out_of_range at memory location 0x00CFF8F0.
-Nhưng khi mình kết hợp dùng với hàm isgraph thì nó lại không gặp lỗi
for (int i = 0; i < lo.size(); i++)
{
if (isgraph(lo.at(i)))
{
}
else
{
if (lo.at(i) == lo.at(i - 1))
{
cout << lo << endl;
}
}
}
ae nào biết chỉ mình với.
Bài liên quan
i = 0 thì
lo.at(i - 1)
chạy kiểu gì hả bạn?lo
là std::string, nó rất “nhạy cảm” với vụ này.Lần sau bạn nên đọc kĩ lỗi và có search google trước khi hỏi.
Có 1 rổ kết quả cho bạn chọn nếu bạn google vói keyword “std::out_of_range at memory location”
mình lên gg r k thấy ms vào đây hỏi chứ ms học mà có phải học lâu r đâu vs cả mình dùng isgraph thì nó vẫn chạy dc nhưng k dùng isgraph thì nó bị lỗi
Viết câu có chấm phẩy giúp mình nhé. Mình không đủ hơi để đọc 1 lèo câu của bạn đâu
OK, nếu như bạn đã nói là bạn gg rồi, vậy thì trong câu hỏi bạn hãy nói rõ ra là “em đã gg hoài mà không tìm được kết quả”. Tuy nhiên, lỗi của bạn rất cơ bản, bạn có thể sử dụng công cụ debug của IDE để tìm lỗi chứ không nên quăng mỗi cái đoạn code lỗi lên đây và để đấy.
Bạn đang nói đến vấn đề nào thế?
string lo = “son tungMTP” ;
tôi dùng ntn thì nó lại chạy được =)))
Bạn có hiểu hàm
isgraph
dùng để làm gì không thế?Trong trường hợp này, tốt nhất nên đặt điều kiện của vòng for để tránh lỗi truy cập ngoài string như vừa rồi.
tôi lên gg thì thấy bảo hàm isgraph để kiểm tra xem trong kí tự đó có phải trong bảng mã ascii không nếu mà không thì nó trả về giá trị khác 0
ông sửa hộ tôi cho đúng với, cảm ơn trước =)))))
Bạn thử tư duy một chút:
isgraph
trong đoạn code này là gì? Có cần thiết phải giữ lại không?Nếu như nhập 1 string toàn các kí tự trong bảng mã ASCII thì đâu cần phải kiểm tra nữa?
i = 0 -> i - 1 = -1 -> truy cập ngoài mảng
->i = ?
để không bị truy cập ngoài mảng?Code mà lười sửa vs debug thì… xin lỗi bạn.
không phải lười sửa mà là chưa bt hướng giải quyết ntn thôi =)))
Với i=0 thì khi chạy nó sẽ gọi lo.at(-1), ngoài phạm vi của mảng nên sẽ throw exception
std::out_of_range
. Bạn nên khởi tạo i=1.[quote=“huy99ls01, post:1, topic:51119”]for (int i = 0; i < lo.size(); i++)
{
if (isgraph(lo.at(i)))
{
}
else
{
if (lo.at(i) == lo.at(i - 1))
{
cout << lo << endl;
}
}
}
[/quote]
Hàm
isgraph
kiểm tra kí tự có phải là kí tự in ra được màn hình hay không. Ở đâylo
là chuỗi bạn nhập từ bàn phím nên toàn kí tự có thể in ra được. Do đóisgraph(lo.at(i)
đúng và sẽ không nhảy vào block else nên không xảy ra exception.Trang này có thể giúp bạn phần nào
lmgtfy.com
LMGTFY
LMGTFY
đúng cái mình muốn hỏi, cảm ơn bạn duckhan
mình tìm rồi bạn ơi =))