首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 獲取字符串字節長度:sizeof vs length() 區別

     編輯:程式設計綜合問答

錯誤代碼

string str;
cin >> str;
int int_size = sizeof(str); // ❌ 返回 string 對象大小(通常 32/24 字節),非字符內容長度

正確方法

int byteSize = str.length();        // 字符數(對應字節數,視編碼而定)
// 或
int byteSize = str.size();          // 同 length()
// 若需 UTF-8 字節數:
int utf8Bytes = Encoding.UTF8.GetBytes(str).Length; // C# 風格,C++ 需手動遍歷或用 ICU

核心區別

方法含義
sizeof(str)編譯期常量,std::string 類對象內存佔用(指針、大小、容量等元數據)
str.length()/size()運行期字符數(不含結尾 \0)

完整示例

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "aaaaaaaaaaaaaaaaaa";
    cout << str << " 所占字符數:" << str.length() << endl;
    cout << "對象內存大小:" << sizeof(str) << " 字節" << endl;
    return 0;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved