我正在尝试创建一个程序,询问用户想要读取的文件,当我尝试myfile.open(fileName)得到错误时:" std::basic_ifstream<char, std::char_traits<char> >::open(std::string&)'该行没有匹配函数".
string filename;
cout<<"Enter name of file: ";
cin>>filename;
ifstream myFile;
myFile.open(filename); //where the error occurs.
myFile.close();
Run Code Online (Sandbox Code Playgroud) 我想插入元素i进入std::vector someVector,但不希望使用.insert(),因为它是O(n)的复杂性,因为(据我所知),它推回所有其他元素.
无论如何在恒定时间内这样做,类似于用于擦除的交换/调整大小技巧?
根据我的理解,错误意味着在某处有一个非法的角色.当我打开我的调试器时,它告诉我 for (var i=0, i<6, i++)不允许"<" .
如果需要,这是上下文:
var largeArray = new Array(6);
for (var i=0, i<6, i++)
{
if (largeArray[i] == undefined)
{
largeArray[i] = "<img src='image/"+temp+".jpg'/>";
document.getElementById("la").innerHTML = largeArray[i];
}
}
Run Code Online (Sandbox Code Playgroud) 我正在制作一个程序,用户输入30天的收盘价格,程序找到最低价格和最高价格.
用户输入数据后,程序将无法继续.
double highest = stockPrices[0];
double lowest = stockPrices[0];
for(int j = 0; j < sizeof(stockPrices) + 1; j++) {
if(stockPrices[j] > highest) {
highest = stockPrices[j];
}
if(stockPrices[j] < lowest) {
lowest = stockPrices[j];
}
}
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到无限循环的位置.
for(int i = 0; i < sizeof(stockPrices) + 1; i++) {
cin >> stockPrices[i];
}
Run Code Online (Sandbox Code Playgroud)
这部分工作正常,这就是为什么我没有意识到我的上限是错误编辑:我认为这部分工作正常
所以,我有我需要打破目前的功能和回到函数的开始,一些包括错误检查(我没有学过的情况下try,throw或者catch还)和最近我一直在使用递归忽略了这样一个事实,即递归不像a一样goto简单地返回到函数的开头而是创建一个单独的自身副本,因此如果我使用递归来捕获客户端输入错误之类的东西,如果客户端产生足够的错误,它可以导致潜在的内存泄漏.
我想知道是否有一个特定的功能可以让我'重启'一个功能.
作为使用伪伪代码的示例:
int foo(){
//prompt for and receive input
if(!matchCondition)
//stop foo() and restart foo()
//does something
}
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一另一件事就是将函数调用放在一个循环中,但是如果例如函数在main()我不能完全将调用main放在循环中main而不创建至少一个重复,那么这不是最佳的.另一个不起作用的例子是,如果函数需要返回没有限制的东西,那么可以自然地产生"错误代码"而不会发生错误.
bool ifError=1;
while(ifError){
ifError = foo();
}
int foo(){
//prompt for and receive input
if(!matchCondition)
return 1;
//do something
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我唯一能想到的是一个goto指向foo()被调用行的语句.如果它存在,但我知道这是我做过的最糟糕的事情.