我想知道将int转换为C ++样式字符串以及从C ++样式字符串转换为int的最简单方法是什么。
修改的
非常感谢你。将表单字符串转换为int时如果传递char字符串会发生什么? (例如:“abce”)。
谢谢&的问候,
mouseY的
答案 0 :(得分:3)
最简单可能是使用operator<<
而operator>>
使用stringstream
(您可以从stringstream
初始化string
},并使用流的.str()
成员在写入后检索字符串。
Boost有一个lexical_cast
,这使得这一点变得特别容易(虽然不是效率的典范)。正常使用类似于int x = lexical_cast<int>(your_string);
答案 1 :(得分:1)
您可以将“%x”说明符更改为“%d”或sprintf支持的任何其他格式。确保适当调整缓冲区大小'buf'
int main(){
char buf[sizeof(int)*2 + 1];
int x = 0x12345678;
sprintf(buf, "%x", x);
string str(buf);
int y = atoi(str.c_str());
}
编辑2:
int main(){
char buf[sizeof(int)*2 + 1];
int x = 42;
sprintf(buf, "%x", x);
string str(buf);
//int y = atoi(str.c_str());
int y = static_cast<int>(strtol(str.c_str(), NULL, 16));
}
答案 2 :(得分:0)
这是将字符串转换为数字。
#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
int convert_string_to_number(const std::string& st)
{
std::istringstream stringinfo(st);
int num = 0;
stringinfo >> num;
return num;
}
int main()
{
int number = 0;
std::string number_as_string("425");
number = convert_string_to_number(number_as_string);
std::cout << "The number is " << number << std::endl;
std::cout << "Number of digits are " << number_as_string.length() << std::endl;
}
同样明智的是,以下是将数字转换为字符串。
#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
std::string convert_number_to_string(const int& number_to_convert)
{
std::ostringstream os;
os << number_to_convert;
return (os.str());
}
int main()
{
int number = 425;
std::string stringafterconversion;
stringafterconversion = convert_number_to_string(number);
std::cout << "After conversion " << stringafterconversion << std::endl;
std::cout << "Number of digits are " << stringafterconversion.length() << std::endl;
}
答案 3 :(得分:-1)
使用atoi
将字符串转换为int。使用stringstream
转换另一种方式。