我有一个文本文件写成:
1 2 3 7 8 9 13 14 15
目标是使每一列成为一个整数数组,例如x=[1,7,13]
, y=[2,8,14]
, z=[3,9,15]
.
这是我到目前为止...
我打开文本文件并将内容作为字符串读入:
string fileText;
int n;
int result[];
//file open
ifstream input ("input.txt");
//file read
if(input.is_open())
{
for(int i=0; i<n; i++) //n=3 in this case
{
getline(input, fileText);
result = strtok(fileText," "); // parse each line by blank space " ".
//i get various errors here depending on what I try: such as "must be lvalue"
//or a problem converting string to char.
x[i] = result[0];
y[i] = result[1];
z[i] = result[2];
}
}
所以我的问题是将一行文本作为由空格分隔的数字转换为整数数组。
这在 PHP 等高级语言中非常简单,但在 C++ 中,数据类型和内存分配等变得更加复杂。另外,我是新手!
谢谢
~
如果没有向量,我将如何做到这一点?
如果说我有: int x*, y*, z*;
然后为每个变量指针分配内存:
x = (int*) malloc (n*sizeof(int)); // where n is the number of lines in the text doc.
y = (int*) malloc (n*sizeof(int));
z = (int*) malloc (n*sizeof(int));
现在我想将每一列放入每个 x,y,z 整数数组中。
我可以做类似的事情:
...
std::string line;
int i;
for (int k=0; k<n; k++)
{
while (std::getline (input, line))
{
std::stringstream parse(line);
parse >> i;
x[k] = i;
parse >> i;
y[k] = i;
parse >> i;
z[k] = i;
}
}
现在 x = [1,7,13] 等等。
有没有办法在不使用 push_back() 方法的情况下做到这一点?我只想将整数读入每个数组。
使用 getNextInt() 什么的?