首页 > 解决方案 > 为什么不能将字符串的一部分传递给 atoi 或 stoi?

问题描述

我尝试对一些都是自然数的子字符串执行此操作

fi = stoi(f[i]) - stoi(s[i]);
se = stoi(s[i]) - stoi(f[i]);

其中 f 和 s 是 2 个字符串。当我将字符串的一部分分配给一个新变量时,这个问题得到了解决。我用 atoi(str.c_str()) 经历过类似的事情。为什么 stoi 和 atoi 会这样?

标签: c++stringtype-conversionsubstring

解决方案


为什么不能将字符串的一部分传递给 atoi 或 stoi?

它可以,从std::string您需要调用std::string::substr()方法获取子字符串。就像是:

std::stoi( f.substr( i, 1 ) ); 

假设您想要从 position 开始的 1 个符号子字符串 long istd::string::operator[]不会给你一个子字符串,而是来自那个位置的单个字符,即std::string可以充当字符的容器。


推荐阅读