抬眸. 2024-03-08 14:38 采纳率: 100%
浏览 118
已结题

引入了头文件cstring却使用不了stoi函数

引入了头文件cstring却使用不了stoi函数


#include <iostream>
#include <bits/stdc++.h>
#include <cstring>
using namespace std;

int main()
{
    string s;
    while(cin>>s)
    {
        int sum=0;
        for(int i=0;i<s.size();i++)
        {
            int start=0;
            if(s[i]>='0'&&s[i]<='9')
            {
                start=i;
                int len=0;
                while(s[i]>='0'&&s[i]<='9'&&i<s.size())
                {
                    i++;
                    len++;
                }
                string ss=s.substr(start,len);
                //怎么把字符串转化为数字
                sum+=stoi(ss);
            }
        }
    }
    return 0;
}

显示stoi was not declared in this scope;

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-08 14:39
    关注

    引自免费微信小程序:皆我百晓生

    在C++中,stoi函数并非属于<cstring>头文件,而是在<string>头文件中定义的。因此,要使用stoi函数将字符串转换为整数,你需要包含<string>头文件而非<cstring>。以下是修正后的代码:

    #include <iostream>
    #include <string> // 更改:包含 <string> 头文件以使用 stoi 函数
    // #include <bits/stdc++.h> // 这个头文件通常包含了大量库,但在这里不是必需的,仅需包含需要的部分即可
    // #include <cstring> // 如果不需要其他cstring中的函数,可以移除此行
    
    using namespace std;
    
    int main()
    {
        string s;
        while(cin>>s)
        {
            int sum=0;
            for(int i=0;i<s.size();i++)
            {
                int start=0;
                if(s[i]>='0'&&s[i]<='9')
                {
                    start=i;
                    int len=0;
                    while(s[i]>='0'&&s[i]<='9'&&i<s.size())
                    {
                        i++;
                        len++;
                    }
                    string ss=s.substr(start,len);
                    // 把字符串转化为数字
                    sum+=stoi(ss);
                }
            }
        }
        return 0;
    }
    

    现在,由于正确引入了<string>头文件,stoi函数应当可以在你的程序范围内被识别并正常使用了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 创建了问题 3月8日