#include <iostream>
#include <string>
using namespace std;
void reverStr(const string &str) {
size_t len = str.size();
for (size_t i = len - 1; i >= 0; --i) {
cout << str.at(i);
}
cout << endl;
}
int main() {
string str;
getline(cin,str);
reverStr(str);
system("pause");
return 0;
}
/* 確實能逆序輸出結果,但是輸出結果后就,cout<<str.at(i) 報錯*/
uj5u.com熱心網友回復:
因為我定義回圈變數是size_t型別的,這個數是一個非負數,也就是說當 i = 0的時候,執行 i--,i = 2……32-1 = 4294967295;再使用str.at(i)當然下標越界啊uj5u.com熱心網友回復:
一個比較經典的演算法i-i,判斷>0,比如:
string aa = "123456789"; int a = aa.size();
while (a)cout << aa[a-1] << endl,--a;
這個演算法就不會越界。
uj5u.com熱心網友回復:
size_t是無符號的型別,所以當i=0時,--i并不是負數,而是一個很大的數。把i定義成int就行了uj5u.com熱心網友回復:
一樣,就照你的例子稍加修改一下:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/27629.html
標籤:C++ 語言
上一篇:linux下死鎖實作問題
下一篇:記憶體復制速度,cache的影響,acheable到cacheable cacheable到non-cacheable,non到 cacheable
