c++:返回string的数组,引用时为空

string* map_signal_atp()
{
	ifstream infile;
	string path = "C:\\Users\\W\\Desktop\\DH3_Clipper_FT_2Site_teserv_V01.stil";
	infile.open(path);
	string str;
	int RunFlag = 0;
	int lines = 0;
	string map_signal[64];

	while (!infile.eof())
	{

		getline(infile, str);


		switch (RunFlag)
		{
		case 1:
			for (size_t i = 2; i < str.length(); i++)
			{
				if (str[i] == ' ')
				{
					break;
				}
				map_signal[lines] += str[i];
			}
			lines++;
			break;
		default:
			break;
		}

		if (lines == 64)
		{
			break;
		}


		string::size_type idx_map;
		idx_map = str.find("Signals {");
		if (idx_map != string::npos)
		{
			RunFlag = 1;
		}
	}
	return map_signal;
}
//map_signal[0] 为 GPOIO_0


int main()
{
	string* map_signal=new string[64];
	string dsa = *(map_signal + 0);
}

//dsa赋值时为空

 

map_signal是函数内定义的局部变量,函数执行结束后,内存空间就被回收了,你外部想用的时候,已经物是人非啦

void map_signal_atp(string *map_signal,int strlen)

{
}

int main()

{

string* map_signal=new string[64];

map_signal_atp(map_signal,64);
}

 

尽量避免使用 string *

c++实现了很多算法和模板,多用用stl吧,

你这里完全用vector<string>来代替,vector不香吗,vector也是动态的

也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html