我一直试图做的是,从stdin读取一行并将其拆分,使用空格作为分隔符。
假设我将此作为输入:
2
1 2
3 4
第一行给出了我想要阅读的行数,它们都是整数行,由未知数量的空格分隔(即可以是1个空格,但也可以是10个空格)。登记/> 我一直试图做的是将这些行读入动态大小的整数数组中。
这在Python中非常简单:
foo = raw_input()
array = foo.split()
甚至更短:
foo = raw_input().split()
然而,由于这种情况,我必须学习C ++的美。 所以我尝试创建类似于上面Python代码的东西:
#include <iostream>
using namespace std;
int lines;
int *array;
int main() {
cin >> lines;
for (int line = 0; line < lines; line++) {
// Something.
}
}
我似乎不知道分割输入线的方法。我知道std :: cin读取直到它到达空格。但是,我似乎无法想到要计算线上数字的数量......
非常感谢正确的方向,谢谢。
答案 0 :(得分:1)
所以你想要的只是一个轻推,这里有几个提示......
std::getline()
- 允许您从流中读取std::string
。
然后,您可以使用您刚读过的字符串构建std::istringstream
。然后使用此流来读取您的整数
例如:
std::string line;
if(std::getline(std::cin, line))
{
std::istringstream str(line);
int lc;
if (str >> lc) // now you have the line count..
{
// now use the same technique above
}
}
哦,对于“动态大小的数组”,您需要查看std::vector<>
答案 1 :(得分:1)
在C ++中,您可以使用[]访问字符串中的字符,就像该字符串是一个数组一样。我建议你从cin读一行到一个字符串,用for循环遍历字符串并检查每个字符以查看它是否是空格。每当您找到非空白字符时,请将其存储在数组中。