如何在同一行C ++上输入多个变量

时间:2016-11-22 01:15:00

标签: c++

所以我试图在同一行输入多个变量并让它调用一个函数并将一些变量解析为它将调用的函数。例如,用户将输入类似

的内容
COMMAND <integer>

我尝试过使用scanf,但是当它工作时,它似乎无法识别我传递的变量。我确信我只是犯了一个愚蠢的错误,但有人可以帮助我吗?我编写了一个简单的程序来尝试测试下面包含的传递变量。

#include <iostream>
#include<stdio.h>
#include<string>

using namespace std;

string derp(int test) {
    cout << "and here " + test << endl;
    return "derp " + test;
}


void main() {
    char command[20];
    int *bla(0);
    scanf("%s %u", &command[0], &bla );
    if (strcmp(command, "derp") == 0) {
        cout << "works here" << endl;
        cout << derp(*bla);
    }
}

1 个答案:

答案 0 :(得分:0)

int *bla(0);更改为指向实际变量的指针:int bla(0);

输出相同:cout << derp(*bla);cout << derp(bla);(不再需要在bla上取消引用)。

此外,您不能输出C字符串+ int的总和,它不是连接。使用链式输出:

cout << "and here " + test << endl;应为cout << "and here " << test << endl;

return "derp " + test;出于同样的原因应该修复。

修正版:

#include <iostream>
#include<stdio.h>
#include<string>

using namespace std;

string derp(int test) {
    cout << "and here " << test << endl;
    return std::string("derp ") + to_string(test);
}


void main() {
    char command[20];
    int bla(0);
    scanf("%s %u", &command[0], &bla);
    if (strcmp(command, "derp") == 0) {
        cout << "works here" << endl;
        cout << derp(bla);
    }
}