Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;将包含数字和单词的文本文件列表转换为整数2D数组_C++_Arrays_Vector_Int - Fatal编程技术网

C++ C++;将包含数字和单词的文本文件列表转换为整数2D数组

C++ C++;将包含数字和单词的文本文件列表转换为整数2D数组,c++,arrays,vector,int,C++,Arrays,Vector,Int,我有一个基本的文本文件,每行有一个条目,大多数条目都是数字的,但也有一些行有单词and(等距)。以下是和之间的此类间距示例: <event> 4 0 0.1005960E+03 0.2722592E+03 0.7546771E-02 0.1099994E+00 21 -1 0 0 501 502 0.00000000000E+00 0.00000000000E+00 0.17700026409E+03 0.17700026409E+03 0.00000000000E+00 0. -1

我有一个基本的文本文件,每行有一个条目,大多数条目都是数字的,但也有一些行有单词and(等距)。以下是和之间的此类间距示例:

<event>
4
0
0.1005960E+03
0.2722592E+03
0.7546771E-02
0.1099994E+00
21
-1
0
0
501
502
0.00000000000E+00
0.00000000000E+00
0.17700026409E+03
0.17700026409E+03
0.00000000000E+00
0.
-1.
21
-1
0
0
502
503
0.00000000000E+00
0.00000000000E+00
-0.45779372796E+03
0.45779372796E+03
0.00000000000E+00
0.
1.
6
1
1
2
501
0
-0.13244216743E+03
-0.16326397666E+03
-0.47746002227E+02
0.27641406353E+03
0.17300000000E+03
0.
-1.
-6
1
1
2
0
503
0.13244216743E+03
0.16326397666E+03
-0.23304746164E+03
0.35837992852E+03
0.17300000000E+03
0.
1.
</event>

4.
0
0.1005960E+03
0.2722592E+03
0.7546771E-02
0.1099994E+00
21
-1
0
0
501
502
0.00000000000E+00
0.00000000000E+00
0.17700026409E+03
0.17700026409E+03
0.00000000000E+00
0
-1.
21
-1
0
0
502
503
0.00000000000E+00
0.00000000000E+00
-0.45779372796E+03
0.45779372796E+03
0.00000000000E+00
0
1.
6.
1.
1.
2.
501
0
-0.13244216743E+03
-0.16329766E+03
-0.47746002227E+02
0.27641406353E+03
0.17300000000E+03
0
-1.
-6
1.
1.
2.
0
503
0.13244216743E+03
0.16329766E+03
-0.23304746164E+03
0.35837992852E+03
0.17300000000E+03
0
1.
我需要做的是创建一个数值矩阵(仅使用数值),其中每列包含和的每个单独实例之间的所有数据值

这就是我到目前为止所做的:

using namespace std;

int main()
{
    vector <string> data; 
    string str;

  ifstream fin("final_small.txt"); 
  while (fin >> str) 
  {                  
    data.push_back(str);
  }
  fin.close(); // Close the file.

int N = data.size();

  int matrix[13][19];

  for (int i = 0; i < 13; i++) {
      for (int j = 0; j < 19; j++) { 

  matrix[i][j] = data[i];

}  
}
}
使用名称空间std;
int main()
{
矢量数据;
字符串str;
ifstream fin(“final_small.txt”);
而(fin>>str)
{                  
数据。推回(str);
}
fin.close();//关闭文件。
int N=data.size();
整数矩阵[13][19];
对于(int i=0;i<13;i++){
对于(int j=0;j<19;j++){
矩阵[i][j]=数据[i];
}  
}
}
显然,这是一项正在进行的巨大工作。首先,我将文本文件读入一个向量中,该向量不能是int类型,因为它是单词。然后,当我尝试将其输入矩阵时,这会导致问题

有人有什么建议吗


提前谢谢

在C++11中,使用std::stoi将字符串转换为int。请注意,如果无法执行转换,std::stoi将抛出std::invalid_参数类型的异常。

在C++11中,使用std::stoi将字符串转换为int。请注意,如果无法执行转换,std::stoi将抛出std::invalid_参数类型的异常。

在C++11中,使用std::stoi将字符串转换为int。请注意,如果无法执行转换,std::stoi将抛出std::invalid_参数类型的异常。

在C++11中,使用std::stoi将字符串转换为int。请注意,如果无法执行转换,std::stoi将引发std::invalid_参数类型的异常。

能否给出一些输入示例?您可以做的是遍历每一行,只转换数字字符。您可以使用可以看到的
stdlib
函数
isdigit()
检查这一点。然后可以使用
atoi()
进行数值转换。希望这有帮助

您能给出一些输入示例吗?您可以做的是遍历每一行,只转换数字字符。您可以使用可以看到的
stdlib
函数
isdigit()
检查这一点。然后可以使用
atoi()
进行数值转换。希望这有帮助

您能给出一些输入示例吗?您可以做的是遍历每一行,只转换数字字符。您可以使用可以看到的
stdlib
函数
isdigit()
检查这一点。然后可以使用
atoi()
进行数值转换。希望这有帮助

您能给出一些输入示例吗?您可以做的是遍历每一行,只转换数字字符。您可以使用可以看到的
stdlib
函数
isdigit()
检查这一点。然后可以使用
atoi()
进行数值转换。希望这有帮助

好的,我们可以给出提示,为每一行创建一个字符串,然后从每个字符串创建一个流。将读取每个流以填充矩阵中的一行。如果尝试从该流中读取数字(使用通常的>>)失败,则必须读取可以忽略的“和”,即iiuc。然后流必须被重置,其余的“and”必须被读取掉,读取整数一直持续到eof。好吧,我们可以给出提示,为每一行创建一个字符串,然后从每个字符串创建一个流。将读取每个流以填充矩阵中的一行。如果尝试从该流中读取数字(使用通常的>>)失败,则必须读取可以忽略的“和”,即iiuc。然后流必须被重置,其余的“and”必须被读取掉,读取整数一直持续到eof。好吧,我们可以给出提示,为每一行创建一个字符串,然后从每个字符串创建一个流。将读取每个流以填充矩阵中的一行。如果尝试从该流中读取数字(使用通常的>>)失败,则必须读取可以忽略的“和”,即iiuc。然后流必须被重置,其余的“and”必须被读取掉,读取整数一直持续到eof。好吧,我们可以给出提示,为每一行创建一个字符串,然后从每个字符串创建一个流。将读取每个流以填充矩阵中的一行。如果尝试从该流中读取数字(使用通常的>>)失败,则必须读取可以忽略的“和”,即iiuc。然后流必须被重置,其余的“和”必须被读取掉,读取INT继续到eof。谢谢大家!我用输入文件的示例更新到主题。我正在研究你们都参考了什么在研究了你们提供的示例输入之后,我的方法似乎不需要做太多更改。同样,遍历每一行并确保所有条目都是字母数字(您可以在stdlib.h中使用
isalnum()
)。如果行是字母数字,那么使用stdlib的
atof
方法(文档)将其转换为浮点。谢谢大家!我用输入文件的示例更新到主题。我正在研究你们都参考了什么在研究了你们提供的示例输入之后,我的方法似乎不需要做太多更改。再次遍历每一行,并确保所有条目都是正确的