输入INT和str并将其存储到两个单独的列表中 代码> int >和字符串< /C> >,程序将它们存储在C++中的两个单独的列表中。

输入INT和str并将其存储到两个单独的列表中 代码> int >和字符串< /C> >,程序将它们存储在C++中的两个单独的列表中。,c++,C++,我在if(isNum(input))上得到一个错误-无效参数;无法将输入从字符转换为字符串 #include <list> #include <iostream> using namespace std; bool isNum(string s) { for (int i = 0; i < s.length(); i++) if (isdigit(s[i]) == false) return false;

我在
if(isNum(input))
上得到一个错误-无效参数;无法将输入从字符转换为字符串

#include <list>
#include <iostream>

using namespace std;

bool isNum(string s)
{
    for (int i = 0; i < s.length(); i++)
        if (isdigit(s[i]) == false)
            return false;
    return true;
}

int main(int argv, char* argc[])
{
    int i;
    string str;
    list<int> l;
    list<string> s;
    char input;

    do {
        cin >> input;
        if (isNum(input))
        {
            i = input;
            l.push_front(i);
        }
        else
        {
            str = input;
            s.push_back(str);
        }

        l.push_back(i);
        s.push_back(str);

    } while (i != 0);

    l.sort();

    list<int>::const_iterator iter;
    for (iter = l.begin(); iter != l.end(); iter++)
        cout << (*iter) << endl;
}
#包括
#包括
使用名称空间std;
bool isNum(字符串s)
{
对于(int i=0;i>输入;
if(isNum(输入))
{
i=输入;
l、 向前推(i);
}
其他的
{
str=输入;
s、 推回(str);
}
l、 推回(i);
s、 推回(str);
}而(i!=0);
l、 排序();
列表::常量迭代器iter;
对于(iter=l.begin();iter!=l.end();iter++)

cout这不是那么容易…但是我会让流来决定它是
int
还是
字符串

#包括
#包括
#包括
int main()//我们的程序不需要参数
{
std::列表字符串;
std::列表编号;
int-num;
做{
std::字符串str;
如果(std::cin>>num){//尝试读取整数,如果失败,num将为0
数字。向前推(数字);
}
如果(std::cin.clear(),std::cin>>str){//重置流标志,因为
strings.push_front(str);//我们只有在尝试
num=42;//否,不退出//提取整数失败。
}
}while(std::cin&&num!=0);//只要流是好的且num不是0
strings.sort();

std::cout这不是那么容易……但是我会让流来决定它是
int
还是
字符串

#包括
#包括
#包括
int main()//我们的程序不需要参数
{
std::列表字符串;
std::列表编号;
int-num;
做{
std::字符串str;
如果(std::cin>>num){//尝试读取整数,如果失败,num将为0
数字。向前推(数字);
}
如果(std::cin.clear(),std::cin>>str){//重置流标志,因为
strings.push_front(str);//我们只有在尝试
num=42;//否,不退出//提取整数失败。
}
}while(std::cin&&num!=0);//只要流是好的且num不是0
strings.sort();

std::cout
输入的类型是
char
,因此它将从输入中获取一个字符。这使得测试它是否表示一个数字变得简单。不需要
isNum
——只需直接调用
isdigit
一次。如果将其更改为
std::string
,这将修复该错误,但
i=输入是没有意义的。
input
的类型是
char
,因此它将从输入中获取一个字符。这使得测试它是否代表一个数字变得简单。不需要
isNum
——只需直接调用一次
isdigit
。如果您将其更改为
std::string
,这将修复该错误,但是,
i=input
就没有意义了。