Trong đoạn mã bên dưới, tôi có một câu lệnh trong khi được sử dụng để đảm bảo chuỗi đầu vào nhỏ hơn 10 ký tự. Tôi đã khai báo số bool
được gọi là cont
mà tôi sử dụng để báo cho vòng lặp while dừng lại sau khi các điều kiện của tôi đã được đáp ứng.Sử dụng dấu ngoặc nhọn để tách riêng biến mà tôi muốn sử dụng nhiều lần trong C++
#include "stdafx.h"
#include <iostream>
#include <string>
int main()
{
using namespace std;
cout << "Enter a string less than 10 characters long: ";
string teststring;
{
bool cont(false);
//if input is 10 or more characters, ask for input again until it is less
while (!cont)
{
getline(cin, teststring);
if (teststring.length() >= 10)
{
cout << "Too long, try again: ";
}
else
{
cout << "Thank you.\n\n";
cont = true;
}
}
}
return 0;
}
Như bạn thấy đó, tôi đã sử dụng một bộ {}
s để tách mã ra, đưa ra các biến cont
một phạm vi địa phương trong những niềng răng. Tôi đã làm điều này để nếu tôi muốn sử dụng tên biến đó một lần nữa, tôi chỉ có thể tái tuyên bố nó, và khi tôi hoàn thành nó, nó bị phá hủy.
Đây có phải là phương pháp được chấp nhận không? Hay là có cách nào tốt hơn để làm những gì tôi đã làm? Tôi thừa nhận rằng trong kịch bản cơ bản, cụ thể này, điều kiện đơn giản là nó hầu như không cần thiết, nhưng tôi có thể muốn làm điều này cho các vòng lặp phức tạp hơn trong tương lai.
Tại sao bạn sẽ muốn tái khai báo nó nếu bạn đang sử dụng nó một lần nữa? Bạn chỉ có thể đặt nó sai sau vòng lặp và tái sử dụng nếu bạn muốn (không có phạm vi điều chỉnh) – moffeltje
Nếu bạn thấy mình cần làm điều này, bạn có quá nhiều mã trong một hàm. Bạn nên chia ra thành một hàm riêng biệt. –
Câu hỏi tương tự http://stackoverflow.com/questions/21278015/on-using-several-scoped-blocks-in-a-c-function. – AldurDisciple