」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > C++11 的 `string::c_str()` 仍然以 Null 終止嗎?

C++11 的 `string::c_str()` 仍然以 Null 終止嗎?

發佈於2024-11-07
瀏覽:769

Is C  11\'s `string::c_str()` Still Null-Terminated?

C 11 的 string::c_str() 是否消除空終止?

在C 11 中,string::c_str 不再保證產生一個空終止的string.

原因:

在C 11 中, string::c_str 定義為與string::data 相同,而string::data 又被定義為等價於*( begin() n) 0

後果:

這意味著string::c_str() 可能不再返回以空結尾的字串,在假設這種情況的情況下會導致潛在的錯誤Termination.

解決方案:

解決方案是僅使用string::c_str() 來與遺留程式碼相容。對於新程式碼,請使用 string::data() 來取代。雖然 string::data() 不傳回以 null 結尾的字串,但它會傳回一個指向基礎緩衝區的指針,該緩衝區在內部保證以 null 結尾。

實作細節:

在內部,字串現在需要使用以 null 結尾的緩衝區。第 21.4.5 節中的 operator[] 定義要求,對於 size()

附加說明:

  • &operator[](0) 可用作同義詞c_str().
  • 終止空白字元必須與字元字串資料位於同一緩衝區中,因為*(p size()) 必須等於charT()。因此,即使延遲初始化空字符,也不可能觀察處於中間狀態的緩衝區。
最新教學 更多>
  • 以下是一些標題選項,請記住問題格式和內容重點:

選項 1(專注於問題和解決方案):

* 如何在 Spring Boot 應用程式中設定上下文路徑:避免
    以下是一些標題選項,請記住問題格式和內容重點: 選項 1(專注於問題和解決方案): * 如何在 Spring Boot 應用程式中設定上下文路徑:避免
    為Spring Boot 應用程式新增上下文路徑在Spring Boot 應用程式中新增上下文路徑要以程式設計方式為Spring Boot 應用程式設定上下文根,您可以使用EmbeddedServletContainerFactory豆。此 bean 允許您自訂應用程式使用的 servlet 容器。...
    程式設計 發佈於2024-11-08
  • Laravel 中的全域範圍(StepWise)。
    Laravel 中的全域範圍(StepWise)。
    全域範圍是 Laravel 中的重要概念,可以在整個應用程式中重複使用 Eloquent 條件。透過實作全域範圍,您可以將特定條件套用到所有模型的查詢,從而促進程式碼重複使用和一致性。相比之下,局部範圍僅限於單一模型。在本教程中,我們將重點介紹在 Laravel 中建立和使用全域範圍。 在這一步驟...
    程式設計 發佈於2024-11-08
  • 如何在 React 應用程式中嵌入帶有預覽的鏈接
    如何在 React 應用程式中嵌入帶有預覽的鏈接
    介紹 建立 Web 應用程式時,顯示連結內容的預覽通常很有用,就像社交媒體平台在共享 URL 時如何顯示連結預覽一樣。因此,除了 url 文字之外,您還可以在 url 旁邊顯示圖片和描述等資訊。 在這篇文章中,我將引導您在 React 應用程式中嵌入鏈接,同時使用 axios 和...
    程式設計 發佈於2024-11-08
  • 在 Sass 中使用 Mixin
    在 Sass 中使用 Mixin
    如果您深入研究前端开发世界,您很可能遇到过Sass(语法很棒的样式表)。 Sass 是一个强大的 CSS 预处理器,它通过提供 变量、嵌套、函数和 mixins 等功能来增强您的 CSS 工作流程。在这些功能中,mixins 作为游戏规则改变者脱颖而出,允许您有效地重用代码并保持样式表的一致性。 ...
    程式設計 發佈於2024-11-08
  • PHP 5.3 中的 ?: 運算子是什麼?
    PHP 5.3 中的 ?: 運算子是什麼?
    PHP 5.3 中的?: 運算子PHP 5.3 引入了?: 運算符,這是以前可用的條件運算符的壓縮形式。最初,條件運算子採用以下形式:expr ? val_if_true : val_if_false在 PHP 5.3 中,您可以省略中間部分,從而得到 ?: 語法。這相當於:expr ? expr ...
    程式設計 發佈於2024-11-08
  • 透過靜態分析、映像初始化和堆疊快照提高效能
    透過靜態分析、映像初始化和堆疊快照提高效能
    从整体结构到分布式系统世界,应用程序开发已经走过了漫长的道路。云计算和微服务架构的大规模采用极大地改变了服务器应用程序的创建和部署方式。我们现在拥有独立、单独部署的服务,而不是巨大的应用程序服务器 当需要时。 然而,可能影响这种平稳运行的新玩家可能是“冷启动”。当第一个请求在新产生的工作进程上处理时...
    程式設計 發佈於2024-11-08
  • 增強 React 清單渲染:乾淨且可重複使用的模式
    增強 React 清單渲染:乾淨且可重複使用的模式
    身為 React 開發人員,我們都遇過需要渲染資料清單的場景。雖然 .map() 方法效果很好,但每次渲染清單時重複相同的邏輯可能會讓人筋疲力盡,並導致程式碼重複。幸運的是,有一種更乾淨、可擴展的方法來處理這個問題,使用可重複使用元件、高階元件或自訂掛鉤。 在本文中,我將分享一種改進 React ...
    程式設計 發佈於2024-11-08
  • 前端與後端開發人員
    前端與後端開發人員
    海‧德夫, 在Web開發中,有兩個重要的角色:前端開發和後端開發。這兩個學科對於任何成功的 Web 專案都是必不可少的,但它們具有不同的角色、技能和職責。在本部落格中,我們將探索前端和後端開發的世界,比較它們的特點、所需的技能和挑戰。因此,無論您是經驗豐富的開發人員還是新手,請準備好探索前端與後端開...
    程式設計 發佈於2024-11-08
  • Pulsy 自述文件已更新
    Pulsy 自述文件已更新
    Pulsy - React 的轻量级状态管理库 Pulsy 是一个轻量级、灵活且易于使用的 React 状态管理库,提供持久性、中间件、记忆、计算和组合存储、时间旅行和 DevTools 集成等功能。它可以帮助您有效地管理 React 应用程序中的全局状态,而无需不必要的复杂性。 ...
    程式設計 發佈於2024-11-08
  • 從命令列運行時,如何解決 Maven 中的「NoClassDefFoundError」問題?
    從命令列運行時,如何解決 Maven 中的「NoClassDefFoundError」問題?
    透過Shade 外掛程式解決NoClassDefFoundError 的依賴關係第一次使用Maven 時,Eclipse 和命令列使用之間可能會出現不一致,原因是依賴管理。儘管在 Eclipse 中成功建立了 Maven 專案並新增了依賴項,但透過命令列執行專案可能會導致 NoClassDefFou...
    程式設計 發佈於2024-11-08
  • 如何在 Mac 上的 XAMPP 中安裝 PHP 的國際擴充?
    如何在 Mac 上的 XAMPP 中安裝 PHP 的國際擴充?
    Mac OS 上XAMPP 的PHP-intl 安裝若要解決在Mac 上使用XAMPP 時在php 中安裝intl 擴充功能的問題,請依照下列步驟操作: 確認PHP路徑:執行哪個php來決定使用的PHP路徑。對於 XAMPP,它應該是 /Applications/XAMPP/xamppfiles/b...
    程式設計 發佈於2024-11-08
  • 如何在 Python 中刪除清單元素的尾隨字元?
    如何在 Python 中刪除清單元素的尾隨字元?
    拆分​​清單元素在程式設計中,經常需要將清單元素拆分為多個元件。常見的情況涉及刪除尾隨字元。假設您有一個字串列表,其中每個元素都包含一個製表符 ('\t'),後面跟著其他文字。目標是消除此選項卡及其後面的所有內容,僅保留選項卡之前的文字。 考慮以下列表:my_list = ['ele...
    程式設計 發佈於2024-11-08
  • 以下是根據您的具體要求為您的文章提供的一些標題選項:

* 為什麼我的程式碼不起作用?理解 C++ 中的函數作用域
* C++ 中的函式作用域:為什麼我的 HelloWorld() F
    以下是根據您的具體要求為您的文章提供的一些標題選項: * 為什麼我的程式碼不起作用?理解 C++ 中的函數作用域 * C++ 中的函式作用域:為什麼我的 HelloWorld() F
    C 中函數宣告的範圍在您的程式碼中,您收到編譯錯誤,因為HelloWorld() 函式未在與調用它的範圍相同。讓我們深入研究函數作用域的概念並解決這個問題。 函數原型,也稱為聲明,在不提供函數定義的情況下告知編譯器函數的存在。在給定的程式碼中,您嘗試呼叫 HelloWorld(),而不是先在目前作用...
    程式設計 發佈於2024-11-08
  • 深入研究 Monty Hall 問題項目:模擬和理解機率概念
    深入研究 Monty Hall 問題項目:模擬和理解機率概念
    歡迎來到 Monty Hall 問題模擬計畫的迷人世界!這種實踐學習經驗將指導您創建基於網路的模擬,該模擬基於流行的遊戲節目場景演示有趣的機率謎題。 揭開蒙蒂霍爾問題之謎 蒙蒂·霍爾問題是一個著名的機率難題,幾十年來一直讓人們感到困惑和著迷。透過參與這個項目,您不僅有機會實現模擬,...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中驗證 MySQL DELETE 查詢是否成功?
    如何在 PHP 中驗證 MySQL DELETE 查詢是否成功?
    驗證 MySQL DELETE 查詢是否成功執行 DELETE 操作時,確定其成功執行至關重要。在 PHP 中,您可以採用各種方法來確定 DELETE 查詢是否成功。 MySQLi 和PDO使用MySQLi 或PDO、mysql_query() 和PDO::成功刪除查詢後,exec() 傳回不同的值...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3