所以我想将一个字符串(输入控制台)分成两个整数。
第一个整数将始终是字符串中0
位的一位数。然后,会有一个空间。该空间之后的所有内容都将是第二位数。
这是我的代码:
struct priority_element
{
int id;
int priority;
} priorityQueue[1000];
string input;
cin << input;
priority_element temp;
string priority = input.substr(0, 1);
string id = input.substr(1, input.size());
temp.priority = atoi(priority.c_str());
temp.id = atoi(id.c_str());
priorityQueue[0] = temp;
cout << priorityQueue[0].priority;
cout << priorityQueue[0].id;
我包含了priority_element
结构,因此您可以看到它是什么。
我一直在尝试输入一个字符串,例如:
5 6
或
5 5000
我可以打印priority (5)
,但是像我的示例代码一样打印priority
和id
的输出为50
。
如果我尝试单独打印id
,则输出为空。
有谁能理解为什么会这样? 谢谢!
答案 0 :(得分:4)
std::cin
将停止在空格处传递,因此您应该使用
input
// cin >> input;
std::getline(cin, input);
正如其他人所建议的,实际上,这可以通过以下方式完成:
std::cin >> temp.priority >> temp.id;
答案 1 :(得分:2)
C ++中的流程仅适用于此类事物。
(来自iostream)
int x,y;
std::cin >> x;
std::cin >> y;
std::cout << x << y << std::endl;
答案 2 :(得分:0)
string id = input.substr(1, input.size());
这里有一个空格而不是第二个数字
英语不是我的第一句话,希望你能理解