0%

int 与 string间转换

C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性

int转为string

利用stringstream类进行转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <stringstream>
using namespace std;

int main()
{
int n = 65535;
stringstream ss;
string s;
ss << n;
ss >> s;
cout << s << endl;

return 0;
}

string到int的转换

  • 方法一:使用stringstream
    1
    2
    3
    4
    string result=”10000”;
    int n=0;
    stream<<result;
    stream>>n;//n等于10000
  • 方法二:使用string库函数stoi

    int stoi (const string& str, size_t* idx = 0, int base = 10);
    str:输入的字符串
    idx: 该参数被设置为输入的字符串中,数字字符之后的位置
    base: 进制数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// stoi example
#include <iostream> // std::cout
#include <string> // std::string, std::stoi

int main ()
{
std::string str_dec = "2001, A Space Odyssey";
std::string str_hex = "40c3";
std::string str_bin = "-10010110001";
std::string str_auto = "0x7f";

std::string::size_type sz; // alias of size_t

int i_dec = std::stoi (str_dec,&sz);
int i_hex = std::stoi (str_hex,nullptr,16);
int i_bin = std::stoi (str_bin,nullptr,2);
int i_auto = std::stoi (str_auto,nullptr,0);

std::cout << str_dec << ": " << i_dec << " and [" << str_dec.substr(sz) << "]\n";
std::cout << str_hex << ": " << i_hex << '\n';
std::cout << str_bin << ": " << i_bin << '\n';
std::cout << str_auto << ": " << i_auto << '\n';

return 0;
}

重复利用stringstream对象

如果在多次转换中使用同一个stringstream对象,记住再每次转换前要使用**clear()**方法


相关链接