我正在尝试学习一些 c++,首先我创建了一些方法来处理控制台的输出和读取。我有两个主要问题,在代码中标记,操作/访问通过引用传入的字符串的 std::vector 中的值。
下面的方法接受一个问题(标准字符串)来询问用户和一个向量标准字符串,其中包含用户认为可接受的响应。为了学习,我还想访问向量中的字符串并更改其值。
std::string My_Namespace::My_Class::ask(std::string question, std::vector<std::string> *validInputs){
bool val = false;
std::string response;
while(!val){
//Ask and get a response
response = ask(question);
//Iterate through the acceptable responses looking for a match
for(unsigned int i = 0; i < validInputs->size(); i++){
if(response == validInputs->at(i)){
////1) Above condition always returns true/////
val = true;
break;
}
}
}
//////////2) does not print anything//////////
println(validInputs->at(0)); //note the println method is just cout << param << "\n" << std::endl
//Really I want to manipulate its value (not the pointer the actual value)
//So I'd want something analogous to validInputs.set(index, newVal); from java
///////////////////////////////////////////
}
几个额外的问题:
3)我在向量上使用 .at(index) 来获取值,但我已经读到应该使用 [] 来代替,但是我不确定它应该是什么样子(validInputs[i] 没有' t 编译)。
4)我假设由于不需要深拷贝,因此像上面那样传递指向向量的指针是一种很好的做法,有人可以验证吗?
5) 我听说 ++i 在循环中比 i++ 更好,是真的吗?为什么?