国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++中string類型和int類型之間的相互轉(zhuǎn)換【全網(wǎng)最全】

這篇具有很好參考價(jià)值的文章主要介紹了C++中string類型和int類型之間的相互轉(zhuǎn)換【全網(wǎng)最全】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

字符串操作是各種算法題中的???,很多數(shù)據(jù)常常以字符串形式給出,其中有的需要自己轉(zhuǎn)化成整數(shù),而一些整型數(shù)據(jù)有時(shí)轉(zhuǎn)換成字符串處理起來(lái)更加方便,比如判斷一個(gè)整數(shù)是否是回文數(shù),所以字符串和整數(shù)的轉(zhuǎn)換是一些問(wèn)題處理的基礎(chǔ)步驟,C++?在處理這類問(wèn)題時(shí)并不像?Python?那樣方便,但是也有許多方法能夠?qū)崿F(xiàn)。

一、string 轉(zhuǎn)為int

1、使用 atoi 轉(zhuǎn)換

#include <iostream>
#include <stdlib.h>

int main()
{
    std::string str = "668";
    std::cout << atoi(str.c_str());
    return 0;
}

atoi?函數(shù)的頭文件是?stdlib.h,同樣是一個(gè)C語(yǔ)言中的函數(shù)

2、 使用std::stoi

這個(gè)標(biāo)準(zhǔn)庫(kù)是從C++11開(kāi)始才有的
示例代碼如下:

#include <iostream>
#include <string>

using namespace std;

int main()
{
	int x;
	string str = "-10";
	string str1 = "-10a";
	string str2 = "a10";
	x = stoi(str);
	cout << x << endl;
	x = stoi(str1);		 //stoi()函數(shù)遇到字母時(shí)會(huì)自動(dòng)停下
	cout << x << endl;
	//x = stoi(str2);    //stoi()函數(shù)沒(méi)有數(shù)字的話,程序雖然可以編譯,但運(yùn)行時(shí)會(huì)出錯(cuò)
	//cout << x << endl;
	return 0;
}

3、?通過(guò) istringstream 轉(zhuǎn)換

#include <iostream>
#include <sstream>

int main()
{
    std::string str = "668";
    int num = 0;

    std::istringstream ss(str);
    ss >> num;

    std::cout << num;
    return 0;
}

使用?istringstream?可以從字符流中讀取整數(shù),與?ostringstream?是一種相反的操作

4、使用 sscanf

sscanf?函數(shù)是 C 語(yǔ)言標(biāo)準(zhǔn)庫(kù)中的函數(shù),可以用于從一個(gè)格式化的字符串中提取數(shù)據(jù)。在 C++ 中,可以使用?sscanf?函數(shù)將字符串轉(zhuǎn)換為整數(shù)。

下面是一個(gè)示例代碼,展示如何使用?sscanf?將字符串轉(zhuǎn)換為整數(shù):

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <string>

int main() {
    std::string str = "12345";
    int num;

    if (sscanf(str.c_str(), "%d", &num) == 1) {
        std::cout << "Converted number: " << num << std::endl;
    } else {
        std::cout << "Failed to convert the string to an integer." << std::endl;
    }

    return 0;
}

在上面的代碼中,我們將字符串 "12345" 存儲(chǔ)在?str?變量中。然后,我們使用?sscanf?函數(shù)將字符串轉(zhuǎn)換為整數(shù),并將結(jié)果存儲(chǔ)在?num?變量中。sscanf?函數(shù)的第一個(gè)參數(shù)是要轉(zhuǎn)換的字符串(使用?c_str()?方法將?std::string?轉(zhuǎn)換為 C 風(fēng)格的字符串),第二個(gè)參數(shù)是格式化字符串?"%d",用于指定要提取的數(shù)據(jù)類型為整數(shù)。如果轉(zhuǎn)換成功,sscanf?函數(shù)將返回成功轉(zhuǎn)換的變量數(shù)目(在這個(gè)例子中為 1),否則返回值為 0。

以上代碼的輸出將是:

Converted number: 12345

請(qǐng)注意,sscanf?函數(shù)可以根據(jù)不同的格式化字符串提取不同類型的數(shù)據(jù)。如果你的字符串中包含其他數(shù)據(jù)類型,你可以相應(yīng)地修改格式化字符串和變量的類型。

【注】如果你使用的是VS編譯器,那么會(huì)報(bào)錯(cuò)說(shuō)sscanf不安全,改為sscanf_s即可。

5、使用strtol

使用c標(biāo)準(zhǔn)庫(kù)

#include <stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);

示例代碼:

#include <iostream>
#include <cstdlib>
#include <string>
 
int main()
{
  std::string text{"123"};
  errno = 0; // pre set to 0
  int number = (int)std::strtol(text.c_str(), nullptr, 10);
  if (errno == ERANGE) {
    // the number is too big/small
    // number = (int)LONG_MAX or (int)LONG_MIN
    std::cerr << "Too big or small: " << errno << "\n";
    return 1;
  } else if (errno) {
    // maybe EINVAL, E2BIG or EDOM
    // unable to convert to a number
    std::cerr << "ERROR: " << errno << "\n";
    return 1;
  }
  // TODO: you need to check whether the long to int overflow too if neccessary
  std::cout << number << "\n";
  return 0;
}

6、使用at()函數(shù)定位,先轉(zhuǎn)為字符型,然后再轉(zhuǎn)為int類型

#include <iostream>
#include <string>

using namespace std;

int main()
{
	string str = "a1b2c3";
	int i = str.at(1) - '0';
	cout << i << endl;
	return 0;
}

二、 int轉(zhuǎn)為string

1、通過(guò) std::to_string() 函數(shù)

#include <iostream>
#include <string> // 添加這個(gè)頭文件

int main() {
    int num = 123;
    std::cout << std::to_string(num);
    return 0;
}

這種方式在 C++11 中才能使用,編譯時(shí)記得加上?--std=c++11?的選項(xiàng)

2、通過(guò) ostringstream

#include <iostream>
#include <sstream>

int main()
{
    int num = 123;
    std::ostringstream ss;
    ss << num;
    std::cout << ss.str();
    return 0;
}

這是一種通過(guò)字符流的方式將整數(shù)轉(zhuǎn)換成字符串,這種方式在C++11之前也可以使用

3、通過(guò) sprintf

#include <stdio.h>

int main()
{
    int num = 123;
    char buffer[256];
    sprintf(buffer, "%d", num);

    printf("%s", buffer);
    return 0;
}

【注】上述代碼在VS編譯器中運(yùn)行時(shí),會(huì)報(bào)sprintf不安全,換為sprintf_s即可

這是一種C語(yǔ)言中的轉(zhuǎn)換方式,sprintf?也可以換成更安全的?snprintf?函數(shù),如下所示。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-763205.html

#include <iostream>
#include <cstdio>

int main() {
	char buffer[100];
	int num = 123;

	// 使用 snprintf 將整數(shù) num 格式化為字符串并存儲(chǔ)在 buffer 中
	snprintf(buffer, sizeof(buffer), "%d", num);

	// 使用 std::cout 輸出 buffer 中的內(nèi)容
	std::cout << "buffer 中的內(nèi)容是:" << buffer << std::endl;

	return 0;
}

到了這里,關(guān)于C++中string類型和int類型之間的相互轉(zhuǎn)換【全網(wǎng)最全】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java中日期轉(zhuǎn)換Date、DateTime、TimeStamp、String之間相互轉(zhuǎn)換

    1.1Date-String 2.1Date-TimeStamp 2.2TimeStamp-Date DateTime使用依賴 3.1Date-DateTime 方法1: 方法2: 3.2DateTime-Date 4.String轉(zhuǎn)DateTime

    2024年02月15日
    瀏覽(25)
  • Java中將String類型轉(zhuǎn)換為int類型的方法

    在Java編程中,經(jīng)常需要將字符串類型(String)轉(zhuǎn)換為整數(shù)類型(int)。這在處理用戶輸入、讀取文件或進(jìn)行數(shù)值計(jì)算時(shí)非常常見(jiàn)。本文將詳細(xì)介紹如何在Java中進(jìn)行這種類型轉(zhuǎn)換,并提供相應(yīng)的源代碼示例。 Java提供了幾種方法來(lái)實(shí)現(xiàn)String到int的轉(zhuǎn)換。下面將介紹其中的兩種常

    2024年02月05日
    瀏覽(44)
  • Java 中將 String 類型轉(zhuǎn)換為 int 類型的方法

    在Java中將 String 類型轉(zhuǎn)換為 int 類型是一個(gè)常見(jiàn)的操作,因?yàn)樵趯?shí)際開(kāi)發(fā)中,我們經(jīng)常需要從用戶輸入或者外部數(shù)據(jù)源中獲取字符串形式的數(shù)字,并將其轉(zhuǎn)換為整數(shù)進(jìn)行計(jì)算和處理。在Java中,有幾種方法可以實(shí)現(xiàn)這種轉(zhuǎn)換,下面我將逐一介紹這些方法。 Integer.parseInt() 方法是

    2024年04月22日
    瀏覽(78)
  • String類型和Date類型相互轉(zhuǎn)換(java)

    ** ** 1、format方法可以把Date類型轉(zhuǎn)換成特定格式的String類型,如果Date類型和定義的SimpleDateFormat長(zhǎng)度不一致會(huì)自動(dòng)在后面補(bǔ)充0 2. parse方法可以把String型的字符串轉(zhuǎn)換成特定格式的date類型,使用parse時(shí)字符串長(zhǎng)度要和定義的SimpleDateFormat對(duì)象長(zhǎng)度一致 下面test2的例子,由于位數(shù)不

    2024年02月15日
    瀏覽(24)
  • 【Java基礎(chǔ)】java中Long與String類型相互轉(zhuǎn)換

    Long 轉(zhuǎn) String 兩種方法: 1: String str = String.valueOf(Long val); 2: String str = Long.toString(Long val); String 轉(zhuǎn) Long兩種方法: 1: Long L = Long.parseLong(String str); 轉(zhuǎn)換后的值是Long包裝類型。 2: long l = Long.ValueOf(String str); 轉(zhuǎn)換后的值是long基本類型 注意:字符串中只能是數(shù)字。

    2024年02月16日
    瀏覽(36)
  • C++中如何將string(字符串)轉(zhuǎn)換為int(整數(shù))

    C++ 編程語(yǔ)言有一些內(nèi)置數(shù)據(jù)類型: int , 對(duì)于整數(shù)(例如 10、150) double ,對(duì)于浮點(diǎn)數(shù)(例如 5.0、4.5) char ,對(duì)于單個(gè)字符(例如“D”、“!”) string ,對(duì)于字符序列(例如“Hello”) bool , 對(duì)于布爾值(true 或 false) C++ 是一種 強(qiáng)類型 編程語(yǔ)言,這意味著當(dāng)您創(chuàng)建變量時(shí),你

    2024年02月06日
    瀏覽(88)
  • 無(wú)縫數(shù)據(jù)轉(zhuǎn)換!使用C++ 實(shí)現(xiàn) Excel文件與CSV之間的相互轉(zhuǎn)換

    無(wú)縫數(shù)據(jù)轉(zhuǎn)換!使用C++ 實(shí)現(xiàn) Excel文件與CSV之間的相互轉(zhuǎn)換

    CSV格式是一種通用的文本文件格式,可在多個(gè)應(yīng)用程序之間共享和使用。相比之下,Excel文件是一種電子表格格式,通常只能在Microsoft Excel中編輯和查看。因此,將Excel文件轉(zhuǎn)換為CSV格式可使數(shù)據(jù)更方便地在其他應(yīng)用程序中使用;而將CSV文件轉(zhuǎn)換為Excel格式則有利于在Microsoft

    2024年02月11日
    瀏覽(23)
  • JAVA中int與string相互轉(zhuǎn)化的幾種方法

    1、String.valueOf(int i) 2、Integer.toString(int i) 3、i + “”; //i 為 int類型,int+string型就是先將int型的i轉(zhuǎn)為string然后跟上后面的空string。 三種方法效率排序?yàn)椋?Integer.toString(int i) String.valueOf(int i) i+“” 1、Integer.parseInt(String)方法 parseInt()是Integer包裝類里的一個(gè)方法,可以將字符串解

    2023年04月23日
    瀏覽(31)
  • Java 字節(jié)數(shù)組(byte[])和整型(int)的相互轉(zhuǎn)換

    ??????恰巧碰到了字節(jié)數(shù)組和整型的轉(zhuǎn)換問(wèn)題,特在此總結(jié)一下。將 int 按照小端法映射到 byte[] 中。即最低 8 位放在 byte[0] 中,依次類推。 ??????這個(gè)實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,先保存最低的 8 位到 byte 數(shù)組中,然后不斷的右移 8 位,每次保存低 8 位數(shù)據(jù)即可,參考代碼:(

    2023年04月12日
    瀏覽(99)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包