iT邦幫忙

1

【c/c++學習筆記】如何將一個字串轉為數字?

c++

這邊記錄一下自己學習c++的筆記,
在c語言中,可以透過<stdlib.h>裡面的atoi函數,
將一個字串轉換成整數,範例:

#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
    char str[] = "123";
    cout << atoi(str) + 10 << endl; //印出133
    return 0;
}

那為什麼改寫成c++版本的string就不能用了呢?
(註: 在c++中引入C 語言的標準函式庫,只要在前面加上 c 然後去掉 .h即可,譬如說<stdlib.h>就變成<cstdlib>)

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

int main()
{
    string str = "123";
    cout << atoi(str) + 10 << endl;
    return 0;
}

錯誤訊息: cannot convert ‘std::string {aka std::basic_string}’ to ‘const char*’ for argument ‘1’ to ‘int atoi(const char*)’

研究了一下之後發現,函數atoi必須吃一個char陣列,
不能直接吃string,
解決的方法也很簡單,
C++ 的 string 函式庫中提供了 c_str() 函數,
只要在字串變數後面加上 c_str() 便能將 string 型態轉換成原生的 char 型態,
附上可以成功轉換的程式碼:

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

int main()
{
    string str = "123";
    cout << atoi(str.c_str()) + 10 << endl;
    return 0;
}

參考資料

  1. C++ string 型態轉 int

尚未有邦友留言

立即登入留言