C 从文件中读取文本,然后将字符串解析为int数组
C++ Reading text from a file and parsing a string into an int array
首先,我不是C 专家,并且仍在学习,因此任何见解都将不胜感激。起初这个问题似乎是一个简单的问题,但是几个月后,我仍然找不到可行的解决方案。我希望它有一个简单的答案,我只是忽略了。
下面是我从此处和其他站点上读取类似线程的一些代码。基本上,我试图从包含GF256乘法数组的文本文件中读取(每256行长256行(。按行读取行的读数似乎可以很好地证明了这条线(cout<< multi_< endl;(,在这些行中,我完全看到了每行所需的内容。正是在这一点上,我有问题。我似乎找不到将此字符串解析为int数组的方法。我有许多迭代的代码,但尝试了不同的尝试,但没有一个对我有用的。我认为对此有一个非常简单的解决方案。同样,对这个问题的任何见解将不胜感激。
int kGF = 0;
int multiGFtemp[256 * 256];
int n;
int main()
{
string multi_;
ifstream fileGF("GF256MultiTable.txt");
if(fileGF.is_open())
{
while(getline(fileGF,multi_))
{
cout << multi_ << endl;
cin.get();
}
fileGF.close();
}
else
{
cout << "File is not open" << endl;
}
cin.get();
cout << multi_;
stringstream stream2(multi_);
while(stream2)
{
stream2 >> n;
cout << n << endl;
multiGFtemp[kGF] = n;
kGF++;
}
for(int k = 0; k < 256 * 256; k++)
{
/*
cout << multiGFtemp[k] << " ";
*/
}
cin.get();
return 0;
}
您的程序解析了multi_
的内容,该内容是文件的最后一行。
您可以将其移入循环中,但这只会使事情复杂化 - 如果您只想在平原阵列中的256 * 256数字,则可以忽略文件结构。
这是将该文件塞入数组中的一种方法:
int multiGFtemp[256 * 256];
int main()
{
ifstream fileGF("GF256MultiTable.txt");
int kGF = 0;
while (kGF < 256 * 256 && fileGF >> multiGFtemp[kGF])
{
kGF++;
}
for(int k = 0; k < kGF; k++)
{
cout << multiGFtemp[k] << " ";
}
}
我假设您正在尝试将已知格式的字符串读取到参数中。例如,您的文件包含一行:" x = 1035,y = 6658"。如果是这种情况,我更喜欢使用sscanf。
例如:
string format("X = %d, Y = %d");
string str("X = 1035, Y = 6658");
int x, y;
sscanf(str.c_str(), format, &x, &y);
增强库可能会在这里为您提供帮助。例如,查看boost字符串算法拆分。
相关文章:
- 将C#字符串数组传递给C++
- 如何为 C 型字符串数组编写 getter 和 setter?
- 有没有办法使用 strcpy 将字符串数组复制到另一个字符串或其他数组中?
- 尝试将 c 字符串数组与分隔符连接起来
- 将字符串数组传递给接受常量字符**的函数
- 返回 C++ 中的字符串数组
- 如何从COM模块中的函数返回字符串数组?
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 删除字符串数组
- 如何将字符串数组返回到 java JNI
- 将字符串数组作为函数参数传递
- C++将字符串数组的元素存储到变量中
- 循环访问还包含未使用元素的字符串数组
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 乘以字符串/数组和全局数组
- 递归二进制搜索与字符串数组
- 如何初始化一个标准::字符串数组?
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- C++字符串数组的动态向量
- 给定一个等长字符串数组