在使用C++刷题的时候,经常需要对输入进行处理,很多时候需要把字符串转为数字,或者数字转为字符串,这时候如何处理?
C++11之后这样的转化非常容易。
1. 字符串转为数字(string转为int)
1. 1 stoi(C++11之后)
用法:
#include <iostream> #include <string> int main() { std::string str = "123"; int num; // using stoi() to store the value of str1 to x num = std::stoi(str); std::cout << num; return 0; } ```
1.2 atoi,C++11之前或者是对c风格的字符串
用法:
#include <iostream> // cstdlib is needed for atoi() #include <cstdlib> using namespace std; int main() { // declaring and initializing character array char str[] = "456"; int num = std::atoi(str); std::cout << "num = " << num; return 0; } ```
对于std::string str
atoi( str.c_str() )
1.3 采用stringstream
用法:
#include <iostream>
#include <string>
#include <sstream> // this will allow you to use stringstream in your program
using namespace std;
int main() {
//create a stringstream object, to input/output strings
stringstream ss;
// a variable named str, that is of string data type
string str = "7";
// a variable named num, that is of int data type
int num;
//extract the string from the str variable (input the string in the stream)
ss << str;
// place the converted value to the int variable
ss >> num;
//print to the consloe
cout << num << endl; // prints the intiger value 7
}
推荐用第一种,简单易懂
2. 数字转为字符串(int转为string)
2.1 to_string()
#include <iostream> #include <string> using namespace std; int main() { int num = 123; std::string str = to_string(num); std::cout << str; return 0; } ```
2.2 stringstream
#include <iostream> #include<string> #include<sstream> // for using stringstream using namespace std; int main() { int num = 15; // creating stringstream object ss std::stringstream ss; // assigning the value of num to ss ss << num; // initializing string variable with the value of ss // and converting it to string format with str() function std::string strNum = ss.str(); std::cout << strNum; return 0; } ```
2.3 itoa(先转化为c风格字符串)
int a = 10;
char *intStr = itoa(a);
string str = string(intStr);
3. 参考资料:
https://www.freecodecamp.org/news/string-to-int-in-c-how-to-convert-a-string-to-an-integer-example/
https://www.programiz.com/cpp-programming/string-int-conversion
https://stackoverflow.com/questions/5590381/easiest-way-to-convert-int-to-string-in-c