問題本身就是一個明顯的答案.無論如何,這是我的代碼片段......
switch(cSet)...
case 8:{ //Special Characters
finalSet = special;
char* charSet = new char[special.size() + 1];
charSet[special.size()] = 0; //Append null terminator
memcpy(charSet, special.c_str(), special.size());
break;
}
case 9:{ //Alphnumeric and Special character
finalSet = all;
char* charSet = new char[all.size() + 1];
charSet[all.size()] = 0; //Append null terminator
memcpy(charSet, all.c_str(), all.size());
break;
}
...
請注意,這finalSet是類型std::string.我需要將其保存為字符數組.在這個語句之后,我charSet在switch語句之外調用:
for(int i = 0; charSet; i++)
printf("%s", charSet[i]);
現在,很明顯switch語句是有條件的,因此可能并不總是聲明變量.因此,Visual Studio 2012會拋出錯誤" charSet未定義".不過,我charSet總是會定義我的switch語句的結構,或者程序將在這種default情況下退出.
為了解決這個問題,我試圖charSet在switch語句的范圍之外聲明.但是,當我這樣做時,由于某種原因,編譯器會拋出讀取訪問錯誤.
我很好奇如何解決這個問題.
任何建設性的意見表示贊賞.
在switch語句外聲明時出錯:
`Unhandled exception at 0x0F6616B3 (msvcr110d.dll) in cuda_comb.exe: 0xC0000005: Access violation reading location 0x00000061.`