2017-04-24 164 views
0

首先我不是C++专家,我仍然在学习,所以任何见解都将不胜感激。这个问题起初似乎是一个简单的问题,但几个月后,我仍然无法找到一个可行的解决方案。我期望它有一个简单的答案,我只是俯视。C++从文件中读取文本并将字符串解析为int数组

下面是我在阅读类似的线程在这里和其他网站上写的一些代码。基本上我试图从包含GF256乘法数组的文本文件中读取(每256行256行)。逐行阅读似乎只是很好地证明了这一行(我知道我需要的是每行所需的字符串。这是我的问题。我似乎无法找到一种方法来解析这个字符串到一个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

在你提供的代码中,有唯一一个可能被处理的行是最后一个,当你用'getline'读取文本时,你应该处理它。考虑编写一个函数,它将一行(字符串)和一个数组作为参数,并用第一个的内容填充后者,从文本行读取数字的问题可以通过使用“CSV C++”搜索并查看其他人已经做到了。 – riodoro1

+0

您可以显示文件如何格式化的示例吗? – NathanOliver

+0

这是一个格式为.txt的文件,其中;是一条新线。 0 0 0 0 ...; 1 1 1 1 1 ...; 1 2 3 5 ...;等等。每个数字之间有一个未定义的空白空间,但每个256个编号行末尾都有一个明确的新行。 – pfe

回答

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] << " "; 
    } 
} 
+0

这正是我所期待的。非常简单。我尝试将解析转移到循环中,并能够以这种方式工作,但您在此处提供的解决方案要简单得多。谢谢! – pfe

0

我假设你想在一个已知的格式来读取一个字符串转换参数。 例如,您有包含一行的文件:“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); 
+0

对于将该行解析为数组的主要问题,您错过了答案。 – Dusteh

相关问题