试图将字符串拆分为两个整数

时间:2015-03-27 01:54:22

标签: c++

所以我想将一个字符串(输入控制台)分成两个整数。

第一个整数将始终是字符串中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),但是像我的示例代码一样打印priorityid的输出为50

如果我尝试单独打印id,则输出为空。

有谁能理解为什么会这样? 谢谢!

3 个答案:

答案 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());

这里有一个空格而不是第二个数字

英语不是我的第一句话,希望你能理解