在system()函数中获取输入(Mac)

时间:2010-06-08 21:25:28

标签: c++ macos bash system

#include <iostream>
using namespace std;

int main() {

    short int enterVal;
    cout << "enter a number to say: " << endl;
    cin >> enterVal;
    system("say "%d"") << enterVal;

    return 0;
}

我正在尝试什么。我希望用户输入一个数字,而system()函数基本上就是这样说的。上面的代码有一个错误,表示“'d'未在此范围内声明”。提前谢谢。

3 个答案:

答案 0 :(得分:3)

您必须手动格式化字符串。

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
    short int enterVal;
    cin >> enterVal;

    stringstream ss;
    ss << "say \"" << enterval << "\"";
    system(ss.str().c_str());
}

答案 1 :(得分:0)

您必须转义引号并格式化字符串。另一种方法是:

#include <iostream>
#include <stdio.h>
using namespace std;

int main() {
    short int enterVal;
    char command[128];
    cout << "enter a number to say: " << endl;
    cin >> enterVal;
    snprintf((char *)&command, 128, "say \"%d\"", enterVal);
    system(command);
    return 0;
}

您还应该知道,您应该以编程方式避免使用system()调用,因为这会使您的程序容易受到安全漏洞的攻击。<​​/ p>

如果你只是乱搞而不介意,那就继续一切;)

答案 2 :(得分:0)

您可以使用以下内容:

#include <iostream>
#include <sstream>
using namespace std;

int main() {

    short int enterVal;
    cout << "enter a number to say: " << endl;
    cin >> enterVal;
    ostringstream buff;
    buff << "say " << enterVal;
    system(buff.str().c_str());

    return 0;
}