有时候有一个使用字符串的任务。通常需要从字符串更改为数字,或相反。在Pascal我使用" str(n,st);"和" val(st,n,c);",通常。请为您编写方法,如何在C ++中完成(如果可以,请指定库)。
答案 0 :(得分:3)
在C ++ 11中,有一组函数可以将arithmetic types
的对象转换为std::string
类型的对象
string to_string(int val);
string to_string(unsigned val);
string to_string(long val);
string to_string(unsigned long val);
string to_string(long long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string(long double val);
以及一组将std::string
类型的对象转换为arithmetic types
对象的函数:
int stoi(const string& str, size_t *idx = 0, int base = 10);
long stol(const string& str, size_t *idx = 0, int base = 10);
unsigned long stoul(const string& str, size_t *idx = 0, int base = 10);
long long stoll(const string& str, size_t *idx = 0, int base = 10);
unsigned long long stoull(const string& str, size_t *idx = 0, int base = 10);
float stof(const string& str, size_t *idx = 0);
double stod(const string& str, size_t *idx = 0);
long double stold(const string& str, size_t *idx = 0);
还有其他一些执行sich转换的功能,我这里没有列出。例如,它们中的一些是处理字符数组的C函数。
答案 1 :(得分:0)
使用std::stoi
std::string example = "21";
int i = std::stoi(example);
查看此答案以获取更多信息 c++ parse int from string
答案 2 :(得分:0)
std::istringstream is("42");
int answer;
is >> answer;
std::ostringstream os;
os << 6*9;
std::string real_answer = os.str();
答案 3 :(得分:0)
两种解决方案:
解决方案1:
string strNum = "12345";
int num = atoi(strNum.c_str());
cout<<num<<endl;
解决方案2:
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
string strNum = "12345";
istringstream tempStr(strNum);
int num;
tempStr >> num;
cout<<num<<endl;