在C ++中从字符串更改为数字

时间:2014-03-31 21:05:20

标签: c++ string

有时候有一个使用字符串的任务。通常需要从字符串更改为数字,或相反。在Pascal我使用" str(n,st);"和" val(st,n,c);",通常。请为您编写方法,如何在C ++中完成(如果可以,请指定库)。

4 个答案:

答案 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;