gpt4 book ai didi

c++ - 通过读取excel表为c文件中的变量赋值

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:47:14 24 4
gpt4 key购买 nike

我需要通过读取 Excel 工作表为 C 文件中的变量赋值。我写了一段代码,但只有最后一个变量被赋值,因为我使用了 for 循环。当我在赋值后创建不同的输出文件时,它会覆盖分配给先前变量的值。

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
string s1, s2, s3,s4;
string filename, text, line;
string cfilename,funcname, signal, value;

int i , k , m;
cout << "Enter excel filename" << endl;
cin >> filename;
cout << "How many lines of text are in the file?" << endl;
cin >> m;
fstream file(filename);
if (!file) {
cerr << "No such file exists." << endl;
exit(1);
}
if (file.is_open()) {

while (file.eof()==0){

for (k = 0; k < m; k++) { //Loops for as many lines as there are in the file

for (i = 0; i < 4; i++) { //Loops for each comma-separated word in the line


if (i == 0){
getline(file, text, ',');
cfilename=text;
cout << cfilename << '\t';}

else if (i == 1){
getline(file, text, ',');
funcname=text;
cout << funcname << '\t';}

else if (i == 2){
getline(file, text, ',');
signal=text;
cout << signal << '\t';}

else if (i == 3){
getline(file, text, '\n');
value=text;
cout << value << '\n';}

}

string s1=signal,s2=value;

s2 = s2 + "; //";

int offset, inset;

string line;

string search=s1;

fstream cfile(cfilename);

fstream fileOutput;

fileOutput.open("output.c");

if(cfile.is_open() && fileOutput.is_open()) {


while(!cfile.eof()) {

getline(cfile, line);

if ((offset = line.find(funcname)) != string::npos){

cout << "found: " << funcname << endl;

string line1;

fileOutput << line << '\n';

skip:

while(getline(cfile,line1)){


if((inset=line1.find(search, 0)) !=string::npos){

cout<<"found: " << search << endl;

string s3 = s1+ "=" +s2;

//cout<<s3;

line1.replace( inset, inset+s1.size(), s3 );}


fileOutput << line1 << '\n';

goto skip;

}

getchar(); }

fileOutput << line << '\n'; }

cfile.close();
fileOutput.close();
}
}
}
}
file.close();
getchar();
return 0;
}

我尝试先搜索一个函数,然后再搜索该函数内的变量。

这里需要一些帮助。

最佳答案

我不确定是不是这个问题,但是...我觉得 while () 太多了。

当您阅读文件的 m 行后,您的

while (file.eof()==0)

结果为真,因为您没有读取文件末尾之后的任何内容。

因此您读取了其他 m 行(失败但无法控制读取是否成功)。

编辑:我认为你应该写类似的东西

cout << "Enter excel filename" << endl;
cin >> filename;
fstream file(filename);
if (!file) {
cerr << "No such file exists." << endl;
exit(1);
}
while ( getline(file, cfilename, ',') && getline(file, funcname, ',')
&& getline(file, signal, ',') && getline(file, value, '\n')) {
cout << cfilename << '\t' << funcname << '\t' << signal << '\t'
<< value << '\n';

string s1=signal,s2=value;
[...]

关于c++ - 通过读取excel表为c文件中的变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36150099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com