int----string相互转换

int转换成string

int stoi(string s){
	int ans=0;
	for(int i=0;i<s.length();++i){
		ans=10*ans+s[i]-48;//之所以会减去48是因为要将char转换成为int 
	}
	return ans;
} 

当然要是‘0’的ASCII码值不确定,也可以这样写:

int stoi(string s){
	int ans=0;
	for(int i=0;i<s.length();++i){
		ans=10*ans+s[i]-'0';//之所以会减去48是因为要将char转换成为int 
	}
	return ans;
} 

string转换成int

string itos(int num){
	string s;//这是一个字符串数组,即里面的元素都是字符串。 
	 while (num > 0) {
        s = char(num % 10 +'0' ) + s; // 将数字转换为字符并拼接到结果前面
        num /= 10;
    }
	return s;
}

char(num%10+‘0’),首先我们需要知道char类型和int类型想做运算是低类型向高类型转换。即char类型向int类型转换。num%10+‘0’这里的‘0’虽然是字符类型,但是在进行int类型时,其int值为0所对应的ASCII码对应的值。

### C++ 中 `string` 和 `int` 的相互转换 #### 将字符串转换为整数 (String to Int) 在现代 C++ 编程中,推荐使用 `std::stoi` 函数来进行字符串到整数的转换。此函数自 C++11 标准起被引入,提供了简洁且安全的方式完成这一任务。 ```cpp #include <iostream> #include <string> using namespace std; int main() { string str = "12345"; try { int num = stoi(str); cout << "String to Int: " << num << endl; } catch (const invalid_argument& e) { cerr << "Invalid argument!" << endl; } } ``` 上述代码展示了如何利用 `std::stoi` 实现从字符串至整数的安全转换[^1]。 对于更早版本的标准库或特定场景下,也可以采用 `atoi` 函数作为替代方案: ```cpp #include <cstdlib> // For atoi() #include <iostream> #include <string> using namespace std; int main() { string str = "668"; cout << atoi(str.c_str()) << endl; } ``` 需要注意的是,`atoi()` 不会抛出异常而是返回零值遇到非法输入时;因此,在某些情况下可能不如 `std::stoi` 安全可靠[^2]。 #### 整数转换为字符串 (Int to String) 同样地,为了简化开发工作并提高程序可读性,建议优先考虑使用 `std::to_string` 方法执行整数向字符串类型的转变操作。 ```cpp #include <iostream> #include <string> using namespace std; int main() { int num2 = 67890; string str2 = to_string(num2); cout << "Int to String: " << str2 << endl; } ``` 这段例子说明了通过调用 `std::to_string` 可轻松达成由数值型态转变为字符序列的目的。 另外一种方式则是借助于 `<sstream>` 头文件所提供的类模板 `stringstream` 来构建临时流对象用于格式化输出目的。 ```cpp #include <sstream> #include <iostream> using namespace std; int main(){ ostringstream os; int number=12345; os<<number; string result=os.str(); cout<<"Result:"<<result<<"\n"; } ``` 尽管这种方法相对复杂一点,但在处理更为复杂的格式需求时可能会显得更加灵活多变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值