c++ - 为什么不能将字符串的一部分传递给 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 会这样?
解决方案
为什么不能将字符串的一部分传递给 atoi 或 stoi?
它可以,从std::string
您需要调用std::string::substr()
方法获取子字符串。就像是:
std::stoi( f.substr( i, 1 ) );
假设您想要从 position 开始的 1 个符号子字符串 long i
。std::string::operator[]
不会给你一个子字符串,而是来自那个位置的单个字符,即std::string
可以充当字符的容器。
推荐阅读
- node.js - EJS 和条件语句
- libreoffice - 在行中查找最后填充的条目
- c - 回调函数与 C 中的 void 表达式有问题?
- angular - 当我单击子组件的输入时,会显示一个 div,我怎样才能一次制作一个或隐藏其他?
- c# - C# .NetCore HttpClient PostAsync Multipart Form-Data,带有文件附件和进度,供 PowerShell 使用
- apache-spark - 在 kubernetes 上运行 Spark 时出现错误“java.lang.UnsatisfiedLinkError:__strncpy_chk”
- kubernetes - Docker Desktop for Windows kubelet 日志位于何处?
- mysql - 在 SQL 中以分钟为步长在时间间隔之间生成时间序列
- python - 计算给定文本文件中每个单词的出现次数
- context-free-grammar - 显示语法。S->aS|aSbS|Ɛ 有歧义并找到明确的语法