C++ 从CSV创建字符串数组
我有一个csv文件的原子元素与原子序数,符号和名称。该文件的格式为: 1,H,氢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
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[]因为我不确定用户想对字符串数组做什么,但也许把它放在堆栈上是可以的。