首先,我不是C ++专家,我仍在学习,所以任何见解都会受到高度赞赏。这个问题起初似乎是一个简单的问题,但几个月后,我仍然无法找到可行的解决方案。我希望它有一个简单的答案,我只是忽略了。
下面是我在这里和其他网站上阅读类似线程时编写的一些代码。基本上我试图从包含GF256乘法数组的文本文件中读取(每256行256行)。逐行读取似乎很好地由行(cout<<<<<< 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;
}
答案 0 :(得分: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] << " ";
}
}
答案 1 :(得分:0)
我假设您正在尝试将已知格式的字符串读入参数。 例如,您的文件包含一行:&#34; X = 1035,Y = 6658&#34;。 如果是这种情况,我更喜欢使用sscanf。
例如:
string format("X = %d, Y = %d");
string str("X = 1035, Y = 6658");
int x, y;
sscanf(str.c_str(), format, &x, &y);
答案 2 :(得分:0)
Boost库可能会对您有所帮助。 例如,请查看Boost String Algo Split。