在C++中将String转换为Integer并将Integer转换为String
在本文中,我们将了解如何在C++中将整数转换为字符串。
我们经常遇到需要将输入变量的数据类型从一种类型转换为另一种类型的情况。
在C++中将整数转换为字符串
可以使用以下两种方法之一将变量或者值从整数转换为字符串:
- C++ stringstream类
- C++ boost.lexical_cast()方法
- C++ to_string()方法
1. stringstream类
C++ stringstream是一个流类。
它将对象(字符串对象)与提供的输入流连接并关联。
语法:
stringstream object-name;
创建一个stringstream对象之后,我们使用" <<运算符"将整数输入值插入流中。
此外,必须创建一个字符串类型变量来存储输入的整数值的字符串值。
最后,使用>>操作符从stringstream对象读取值。
例:
#include <iostream> #include<sstream> using namespace std; int main() { int int_data; cout<<"Input an integer value..\n"; cin>>int_data; stringstream obj; obj<<int_data; string string_val; obj>>string_val; cout<<"Input value after conversion from int to string:\n"<<string_val; }
输出:
Input an integer value.. 24855 Input value after conversion from int to string: 24855
2. boost.lexical_cast()在C++中将整数转换为字符串
C++具有boost/lexical_cast.hpp库,其中包含boost :: lexical_cast()
方法,用于将数字从整数转换为字符串,并将字符串转换为整数。
为了使用boost :: lexical_cast()方法,我们必须使用以下行在程序中包含boost/lexical_cast.hpp头文件:
#include <boost/lexical_cast.hpp>
语法:
boost::lexical_cast<data-type>(variable);
例:
#include<iostream> #include <boost/lexical_cast.hpp> #include <string> using namespace std; int main() { int int_val = 101; string x = boost::lexical_cast<string>(int_val); cout << "String representation of the input integer value:\n"; cout <<x; cout<<endl; return 0; }
在上面的代码片段中,boost :: lexical_cast()方法包含<string>作为转换的数据类型,并接受了整数值作为输入。
输出:
String representation of the input integer value: 101
3. to_string()函数在C++中将整数转换为字符串
C++ String的to_string()方法可用于将输入值从整数转换为字符串类型。
语法:
to_string(value);
例:
#include<iostream> #include <string> using namespace std; int main() { int int_val; cout<<"Enter an integer value:\n"; cin>>int_val; string x = to_string(int_val); cout << "String representation of the input integer value:\n"; cout <<x; cout<<endl; return 0; }
输出:
Enter an integer value: 125 String representation of the input integer value: 125
在C++中将字符串转换为整数
在C++中,可以使用以下两种方法之一将值从字符串转换为整数:
- C++ stringstream类
- sscanf()方法
- stoi()方法
- atoi()方法
- C++ boost :: lexical_cast()方法
1. stringstream类
如前所述,C++ stringstream类将对象(字符串对象)与提供的输入流相关联。
它可用于将输入流的类型从整数转换为字符串,反之亦然。
例:
#include<iostream> #include<sstream> #include <string> using namespace std; int main() { int int_val = 0; string str_val; cout << "Enter a string value:\n"; cin >> str_val; stringstream obj; obj << str_val; obj >> int_val; cout << "Integer representation of the input string value:\n"; cout << int_val; return 0; }
输出:
Enter a string value: 125 Integer representation of the input string value: 125
2. C++ sscanf()方法
sscanf()方法可用于在C++中将字符串转换为整数。
此方法不接受来自标准流对象的输入。
而是,它接受来自字符串变量的输入,并使用适当的格式说明符以整数格式显示它。
语法:
sscanf(string-variable, "%format-specifier", &int_type-variable);
例:
#include<stdio.h> int main() { const char *str_inp = "4575"; int int_val; sscanf(str_inp, "%d", &int_val); printf("Integer representation of the input string: %d", int_val); return 0; }
在上面的代码中,sscanf()方法接受字符串类型的str_inp变量的输入。
此外,它使用"%d"作为格式说明符将字符串值转换为整数类型,并将结果存储在int_val变量中。
输出:
Integer representation of the input string: 4575
3. stoi()方法
C++中的stoi()函数将解析字符串输入,并将字符串的值解释为整数,具体取决于提供的"基本"值。
语法:
stoi(string-variable, pointer-val, base)
'string-variable':表示要转换为整数类型的字符串输入变量。
" pointer-val(可选)":它是一个变量(指针),指向输入字符串变量的最后一个数字值之后的字符。
base(可选):代表需要表示整数的基值。
默认值为10。
例:
#include <iostream> #include <string> using namespace std; int main() { string str_inp1; string str_inp2; cout<<"Enter the string1:\n"; cin>>str_inp1; cout<<"Enter the string2:\n"; cin>>str_inp2; int int_val1 = stoi(str_inp1); int int_val2 = stoi(str_inp2); cout<<"Integer representation of String input string1:\n"; cout<<int_val1<<endl; cout<<"Integer representation of String input string2:\n"; cout<<int_val2<<endl; return 0; }
输出:
Enter the string1: 2578 Enter the string2: 257 Integer representation of String input string1: 2578 Integer representation of String input string2: 257
4. atoi()方法
C++ atoi()方法解析字符数组/c-string,并将字符串值解释为整数类型的值。
atoi()方法返回整数类型的值。
语法:
atoi (const char * string-variable);
例:
#include <iostream> #include <string> using namespace std; int main() { const char *str_inp1 = "5789"; int int_val1 = atoi(str_inp1); cout<<"Integer representation of String input:\n"; cout<<int_val1<<endl; return 0; }
输出:
Integer representation of String input: 5789
注意:atoi()和stoi()函数之间的唯一区别是atoi()方法仅适用于字符数组和字符串文字,而stoi()函数适用于字符数组,字符串文字以及C++字符串。
5. Boost.Lexical_Cast
与我们使用上面的boost词法转换将int转换为字符串的方式类似,这里我们将做相反的工作,并在C++中将字符串转换为int。
例:
#include<iostream> #include <boost/lexical_cast.hpp> #include <string> using namespace std; int main() { string str_val = "101"; int int_val = boost::lexical_cast<int>(str_val); cout << "Integer representation of the input string value:\n"; cout <<int_val; cout<<endl; return 0; }
输出:
Integer representation of the input string value: 101