Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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++ 从CSV创建字符串数组_C++_Csv - Fatal编程技术网

C++ 从CSV创建字符串数组

C++ 从CSV创建字符串数组,c++,csv,C++,Csv,我有一个csv文件的原子元素与原子序数,符号和名称。该文件的格式为: 1,H,氢 2,氦,氦 3,锂,锂 我想创建一个由原子序数引用的符号数组。即ArrayName[32]=“Ge” 我一直在尝试使用sscanf,但它一直不起作用。大致代码如下: char temp[200]; float temp_z; std::string temp_ele; std::string temp_name; while(!fin.eof()) { fin.getline(temp,200); sscanf

我有一个csv文件的原子元素与原子序数,符号和名称。该文件的格式为:

1,H,氢
2,氦,氦
3,锂,锂

我想创建一个由原子序数引用的符号数组。即ArrayName[32]=“Ge”

我一直在尝试使用sscanf,但它一直不起作用。大致代码如下:

char temp[200];
float temp_z;
std::string temp_ele;
std::string temp_name;

while(!fin.eof())
{
fin.getline(temp,200);
sscanf(temp, "\"%f\",\"%s\", \"%s\"",&temp_z, &temp_ele, &temp_name);

cout<<temp_z<<endl;
cout<<temp_ele<<endl;
cout<<temp_name<<endl;
}
chartemp[200];
浮动温度;
标准:字符串温度;
std::字符串临时名称;
而(!fin.eof())
{
fin.getline(温度200);
sscanf(temp,\%f\,\%s\,\%s\,&temp\u z,&temp\u ele,&temp\u name);

cout您可以这样读取每个元素:

string theStrings[200]; //initialize to correct size
int i = 0;
string name;
while(!fin.eof())
{
    getline(thefilestream, name, ',' );
    theStrings[i++] = name;
    cout<<name<<endl;
}
字符串[200];//初始化为正确的大小
int i=0;
字符串名;
而(!fin.eof())
{
getline(文件流,名称,,);
字符串[i++]=名称;

无法使用此循环读取文件的每一行:

    string line;
    ifstream myfile;
    myfile.open("myfile.txt");

   if(!myfile.is_open()) {
      perror("Error open");
      exit(EXIT_FAILURE);
   }
    while(getline(myfile, line)) {
     // Split line by comma to get what's your want
    }

然后用逗号分割每一行,得到该行的每个元素。

sscanf()
至少应该是一种可行的方法。你能显示出不起作用的代码吗?这样我们就可以帮助你了?这个问题太广泛了。请用一个。提示:如果你在每行的stringstream上应用getline with',你可以用它作为分隔符。欢迎这样做。请阅读。“一直不起作用。”没有什么要做的。显示您的代码。这将为我获取文件中存储在name中的第一个元素。因此,在我的示例中,只有1。如何获取下两个元素?将其放入循环中!如果需要,您还可以将数据存储在std:vector中。vector arlandStrings;1.您不应该在
.eof()上迭代
像这样。2.为什么要动态分配内存?3.目前的代码存在内存泄漏。你是对的。我想我只是在回答这个问题。试图通过匹配他的示例来提供帮助。除了添加
删除[]之外,我还需要做很多更改pStr;
为什么不使用vector?为什么不将name移到循环之外,为什么不重写为
pStr[i++]=name;
这些更改对作者的问题没有帮助。我犹豫是否更改while循环,因为这是从更新后的初始问题中提取的。我留下了delete[]因为我不确定用户想对字符串数组做什么,但也许把它放在堆栈上是可以的。