Вы не можете действительно извлечь в анонимную строку, но вы можете просто сделать пустышку и игнорировать ее:
#include <string>
#include <istream>
// #include <sstream> // see below
void cmd_test(std::istream & iss) // any std::istream will do!
{
// alternatively, pass a `const char * str` as the argument,
// change the above header inclusion, and declare:
// std::istringstream iss(str);
int d;
std::string s;
if (!(iss >> s >> d)) { /* maybe handle error */ }
// now `d` holds your value if the above succeeded
}
Обратите внимание, что извлечение может завершиться неудачей, откуда я вставил условное выражение. Вам решать, что вы будете делать в случае ошибки; C ++ должен был бы генерировать исключение (хотя, если ваша фактическая функция уже сообщает об ошибках, вы можете просто return
ошибка).
Пример использования:
#include <iostream>
#include <fstream>
int main()
{
cmd_test(std::cin);
std::ifstream infile("myfile.txt");
cmd_test(infile);
std::string s = get_string_from_user();
std::istringstream iss(s);
cmd_test(iss);
}