Получение ввода в функции system () (Mac) - PullRequest
0 голосов
/ 09 июня 2010
#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 ]

3 голосов
/ 09 июня 2010

Вы должны отформатировать строку вручную.

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

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

    stringstream ss;
    ss << "say \"" << enterval << "\"";
    system(ss.str().c_str());
}
0 голосов
/ 09 июня 2010

Вы можете использовать что-то вроде этого:

#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;
}
0 голосов
/ 09 июня 2010

Вы должны экранировать кавычки и отформатировать строку.Другой способ сделать это:

#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;
}

Вы также должны знать, что вам следует программно избегать использования системных вызовов (), так как это делает вашу программу уязвимой для недостатков безопасности.

Если выВы просто возитесь и продолжайте во что бы то ни стало;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...